sort与qsort

一、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中的参数是指针
原文地址:https://www.cnblogs.com/Neptunes/p/3265096.html