qsort()函数排序实例
程序员文章站
2023-12-26 16:24:16
...
qsort函数实例
#分析+代码+测试数据
分析
qsort在c++的algorithm头文件中,注意其参数的使用。比如
// 数在数组num[210]中的范围是闭区间 [0,n-1] 或者[1,n]
//对应的第一个参数num,第二个参数是n。对应的第一个参数是num+1,第二个参数是n+1.
//第三个参数写成sizeof(num[0]),数组每个元素的空间大小。
//第四个参数是自定义cmp函数,可以如下代码中这样写,亦可以
int cmp(int a,int b){
return a>b;
}
//cmp函数返回正数则升序,返回负数则降序排列。
//如上函数,a>b则返回正数,a<b则返回负数。
代码
//复杂度O(N*logN),在基本有序的情况下效率不高
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}
int main(){
int n,num[210];
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&num[i]);
qsort(num+1,n,sizeof(num[0]),cmp);
for(int i=1;i<n;i++)
printf("%d ",num[i]);
printf("%d\n",num[n]);
}
测试数据
输入数据
5
8 3 6 4 9
输出数据
3 4 6 8 9