一、sort:
1、头文件#include
2、格式 sort(arry,arry + n,cmp) 说明:arry为数组名(即首元素地址)、n为数组中元素个数、cmp是自己定义的函数。因为sort默认升序排序,通过自己定义的cmp我们可以实现降序、二位排序等操作。
3、应用:
a、字符数组char:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
char a[11]={'b','a','v','r','f','d','j','t','r','e'};
sort(a,a+10);//默认升序
cout<<a;
}
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(char a,char b)//自己定义cmp函数
{
return a>b;//a
}
int main()
{
char a[11]={'r','s','g','d','d','h','j','s','h','d'};
sort(a,a+11,cmp);
cout<<a;
}
b、对double、int等类型数据排序同上模型,只需改变一下数据格式。
c、对结构体按要求排序#include<iostream>
#include<algorithm>
#define n 5
using namespace std;
struct data { int a; int b; int c; };
bool cmp(data x,data y)
{
if(x.a!=y.a) return x.a>y.a;
if(x.b!=y.b) return x.b>y.b;
if(x.c!=y.c) return x.c>y.c;
}
int main()
{
int i; data array[n];
for(i=0;i
cin>>array[i].a>>array[i].b>>array[i].c;
sort(array,array+n,cmp);
for(i=0;i
cout<<array[i].a<<' '<<array[i].b<<' '<<array[i].c<<endl; return 0;
}
二、qsort
1、头文件#incldue<algorithm>
2、格式
void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *))
说明:base为数组名、nelem为数组元素个数、width为数组规模、fcmp是自己定义的函数(和sort一样)
3、应用:(对不同类型数据进行排序是只需改变一下数据类型)
#include<iostream>
#include<algorithm>
using namespace std;
int comp(const void*a,const void *b)
{
return *(int*)a-*(int*)b;
}
int main()
{
int i; int a[111]={3,1,4,3,4,5,6,4,2,7};
qsort(a,3,sizeof(a[0]),comp);
for(i=0;i<10;i++)
cout<<a[i]<<' ';
return 0;
}
注:1、sort与qsort都可以通过改变参数从而对数组部分排序。
2、sort的比较函数返回值是大小关系,qsort返回值可以是大小关系也可以是真或假。(目前测试是这样,待定????)
3、sort的比较函数中参数可以是相应的数据类型,qsort中的参数是指针