C++ STL sort和qsort函数
来源:互联网 发布:魔方数据恢复如何使用 编辑:程序博客网 时间:2024/06/05 09:51
一、sort使用:
1、需要头文件:include<algorithm>
2、使用方法
用法(1):sort(begin,end);//默认是从小到大排序,begin表示要排序元素的首地址,end表示要排序元素的结束地址
int a[n];
sort(a,a+n);
用法(2):sort(begin,end,cmp);//自定义排序函数cmp,要实现从大到小排序,需要自己写排序函数
int a[n];
sort(a,a+n.cmp);
//实例1:默认从小到大排序#include<iostream>#include<algorithm>using namespace std;int main(){ int a[10]={9,6,3,8,5,2,7,4,1,0}; for(int i=0;i<10;i++) cout<<a[i]<<" "; cout<<endl; sort(a,a+10); for(int i=0;i<10;i++) cout<<a[i]<<" "; cout<<endl; return 0;}
//实例2:自定义排数函数,从大到小排序#include<iostream>#include<algorithm>using namespace std;//自定义排序函数bool cmp(int a,int b){ return a>b;//从大到小排序,从小到大排序为a<b}int main(){ int a[10]={9,6,3,8,5,2,7,4,1,0}; for(int i=0;i<10;i++) cout<<a[i]<<" "; cout<<endl; sort(a,a+10,cmp); for(int i=0;i<10;i++) cout<<a[i]<<" "; cout<<endl; system("pause"); return 0;}
//实例3:不自定义排序函数,使用C++ STL强大功能实现排序规则,从小到大排序,比较函数设置为:less<数据类型>从大到小排序,比较函数设置为:greater<数据类型>#include<iostream>#include<algorithm>using namespace std;int main(){ int a[10]={9,6,3,8,5,2,7,4,1,0}; for(int i=0;i<10;i++) cout<<a[i]<<" "; cout<<endl; sort(a,a+10,greater<int>);//从大到小排序,从小到大则为less<int> for(int i=0;i<10;i++) cout<<a[i]<<" "; cout<<endl; system("pause"); return 0;}
注:以上实例换成char类型的数组也是一样的。
3、结构类型的比较函数(实现按多字段排序)
struct point{
int x;
int y;
};
//先按x降序排序,再按y升序排序
bool cmp(point a,point b){
if(a.x!=b.x) return a.x>b.x;//x降序排序
else return a.y<b.y;//x相等时,y升序排序
}
二、qsort
1、需要头文件:include<stdlib.h>
2、使用方法
(1) qsort(void*,size_t,size_t,int*(const void*,const void*));
qsort(数组名,数组元素个数,每个元素大小,比较函数);
int a[n];
qsort(a,n,sizeif(a[0]),cmp);
(2) 比较函数的格式为:int cmp(const void*a ,const void *b){}
1) 返回值为负数:*a排在*b的前面
2) 返回值0:*a和*b那个在前面都行
3) 返回值为正数:*a在*b的后面
所以,return *a - *b;//升序排序
return *b - *a;//降序排序
//实例1:从大到小排序#include<iostream>#include<algorithm>#include<stdlib.h>using namespace std;//自定义比较函数,从大到小排序int compare(const void *a,const void *b){ return *(int*)b-*(int*)a;//从大到小排序,若从小到大牌组为:*(int*)a-*(int*)b}int main(){ int a[20]={2,4,1,23,5,76,0,43,24,65},i; for(i=0;i<20;i++) cout<<a[i]<<" "; cout<<endl; qsort((void*)a,20,sizeof(int),compare); for(i=0;i<20;i++) cout<<a[i]<<" "; cout<<endl; system("pause"); return 0;}
3、结构类型的比较函数(实现按多字段排序)
struct point{
int x;
int y;
};
int cmp(const void*a,const void*b ){
point* m=(point*)a;
point* n=(point*)b;
if(m->x!=n->x) return n->x - m->x;//先按x降序
else return m->y - n->y; //再按y升序
}
4、double类型的比较函数
int cmp(const void* a,const void* b){
double * m=(double*)a;
double* n=(double*)b;
return (*m)>(*n )? 1 : -1;//升序,(*m)>(*n )? -1 : 1;降序
}
5、对字符串排序
struct data{
int a;
char b[100];
};
int cmp(const void* a,const void* b){
data *m=(data*)a;
data *n=(data*)b;
return strcmp(m->b,n->b);//strcmp(a,b);//a>b,返回1;a<b,返回-1;a=b,返回0
}
- C++STL:sort/qsort
- C++ STL sort和qsort函数
- C qsort和C++ sort函数详解
- C/c++ STL排序函数 sort用法 以及 和qsort的用法与区别
- [STL] 排序函数sort和qsort的用法与区别
- STL排序函数sort和qsort的用法与区别
- C++ STL中sort和C中qsort比较
- sort函数和qsort函数
- qsort()函数和sort()函数
- qsort函数和sort函数
- sort函数和qsort函数
- C ++排序函数sort(),qsort()
- C++ sort()函数和C qsort()函数用法总结
- 排序函数qsort和sort
- C/C++中关于qsort和sort函数的使用
- stl sort和qsort的比较
- c/c++ sort函数、qsort函数使用
- 【原+转】STL之优先队列的cmp函数和sort以及qsort函数的cmp
- Android使用SQLCipher对加密数据库文件解密
- SpringMVC+Json构建基于Restful风格的应用
- leetcode 202. Happy Number
- Eclipse快捷键 10个最有用的快捷键
- Ajax 完整教程 (转)
- C++ STL sort和qsort函数
- Add Digits
- CSS定位
- O(n)的回文子串Manacher算法
- 堆和栈的区别
- 谈谈java中的WeakReference
- 用GaussView,Gaussian软件演示小分子的振动和红外波数
- SpringMVC之Interceptor拦截器之登录拦截器
- phpcms关于数据库部分