当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 qsort用法及代码示例


C语言stdlib头文件(stdlib.h)中qsort函数的用法及代码示例。

用法:

void qsort (void* base, size_t num, size_t size,
            int (*compar)(const void*,const void*));
对数组的元素进行排序
排序num指向的数组元素base,每个元素size字节长,使用compar函数确定顺序。

此函数使用的排序算法通过调用指定的元素来比较成对的元素compar函数以指向它们的指针作为参数。

该函数不返回任何值,但会修改由指向的数组的内容base按照定义重新排序其元素compar

等效元素的顺序是不确定的。

参数

base
指向要排序的数组的第一个对象的指针,将其转换为void*
num
指向的数组中的元素数base
size_t是无符号整数类型。
size
数组中每个元素的大小(以字节为单位)。
size_t是无符号整数类型。
compar
指向比较两个元素的函数的指针。
该函数被重复调用qsort比较两个元素。它应遵循以下原型:
 
int compar (const void* p1, const void* p2);

以两个指针作为参数(都转换为const void*)。该函数通过返回(以稳定且可传递的方式)定义元素的顺序:
返回值意义
<0指向的元素p1在由指向的元素之前p2
0指向的元素p1等效于所指向的元素p2
>0指向的元素p1跟随由指向的元素p2

对于可以使用常规关系运算符进行比较的类型,一般compar函数可能看起来像:

1
2
3
4
5
6
int compareMyType (const void * a, const void * b)
{
  if ( *(MyType*)a <  *(MyType*)b ) return -1;
  if ( *(MyType*)a == *(MyType*)b ) return 0;
  if ( *(MyType*)a >  *(MyType*)b ) return 1;
}


返回值



示例

/* qsort example */
#include <stdio.h>      /* printf */
#include <stdlib.h>     /* qsort */

int values[] = { 40, 10, 100, 90, 20, 25 };

int compare (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}

int main ()
{
  int n;
  qsort (values, 6, sizeof(int), compare);
  for (n=0; n<6; n++)
     printf ("%d ",values[n]);
  return 0;
}


输出:

10 20 25 40 90 100




相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C qsort function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。