C中的qsort()采用的是快排算法,C++的sort()则是改进的快排算法。两者的时间复杂度都是
nlogn
用法: void qsort(void* base,size_t_num,size_t_width,int(__cdeclcompare)(const void,const void*));
1 #include<stdio.h>
2 #include<stdlib.h>
3 int num[100];
4 int cmp_int(const void* aa,const void* bb)
5 {
6 int* a=(int*)aa;
7 int* b=(int*)bb;ba
8 return *a-*b; //从小到大排 return *b-*a; //从大到小排
9 }
10 int main()
11 {
12 int i;
int num[5]={3,6,8,1,0};
13 qsort(num,numSize,sizeof(int),cmp_int);
14 for(i=1;i<=3;++i)
15 printf("%d\n",num[i]);
16 }
double类型
1 #include<stdio.h>
2 #include<stdlib.h>
3 double num[100];
4 int cmp_double(const void* aa,const void* bb)
5 {
6 double* a=(double*)aa;
7 double* b=(double*)bb;
8 return *a-*b;
9 }
10 int main()
11 {
12 int i;
13 num[1]=3.5;
14 num[2]=3.1;
15 num[3]=3.3;
16 qsort(num+1,3,sizeof(double),cmp_double);
17 for(i=1;i<=3;++i)
18 printf("%lf\n",num[i]);
19 }