标签:c++
运用填写:
第一个为数组初始地址
第二个为待排序数组的个数
第三个为每个字节的大小(建议sizeof(a[0]))
第四个为函数指针(比较函数)
比较函数:
一般来说比较函数的命名没有硬性的规定,但是我们一般还是用cmp来命名,这样方便我们的程序理解。
cmp函数的两个形参一般来说是:const void *a,const void *b
你可以理解为 前一个形参就相当于待比较数组中相对于后一个形参前面的位置,然后根据返回的 int 的值来确定两者是否需要进行一个交换。
(非官方解释)返回值:
若为0,两者不进行交换
大于0,两者进行交换
小于0,两者不进行交换
(官方解释)返回值:
大于0 elem1将被排在elem2前面
等于0 elem1 等于 elem2
小于0 elem1 将被排在elem2后面
代码:
#include<iostream>
#include<algorithm>
#include<cstdlib>
using namespace std;
int cmp(const void *a,const void *b)//a为前面那个数,b反之
{
int *qa=(int *)a;
int *qb=(int *)b;
if(*qa==*qb)return 0;
//若是后面的数小于前面的数 a > b
if(*qb<*qa)return 1;
else return -1;
}
int main()
{
int a[100],n;
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d",&a[i]);
qsort(a+1,n-1,sizeof(a[1]),cmp);
for(int i=0;i<n;i++)printf("%d",a[i]);
}
标签:c++
原文地址:http://blog.csdn.net/qq_14949289/article/details/44902839