qsort

qsort 的函数原型是    void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));
定义:void   __cdecl qsort(void *, size_t, size_t, int (__cdecl *)(const void *, const void *));
 1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针 ,用于确定排序的顺序
以下为compare函数原型:     compare( (void *) & elem1, (void *) & elem2 );
Compare 函数的返回值
描述
< 0
elem1将被排在elem2前面
0
elem1 等于 elem2
> 0
elem1 将被排在elem2后面
intcompare( const  void *a, const  void *b)
{
return  *( int *)a-*( int *)b;
}
上面是由小到大排序,return *(int *)b - *(int *)a; 为由大到小排序。
对一维数组的排序实例(从小到大排序):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
#include<stdlib.h>
int  comp( const  void *a, const  void *b)
{
return  *( int *)a-*( int *)b;
}
int  main()
{
int  *array;
int  n;
scanf ( "%d" ,&n);
array=( int *) malloc (n* sizeof ( int ));
int  i=0;
for (;i<n;i++)
{
scanf ( "%d" ,(array+i));
}
qsort (array,n, sizeof ( int ),comp);
for (i=0;i<n;i++)
{
printf ( "%d\t" ,array[i]);
}
return0;
}


你可能感兴趣的:(qsort)