赞
踩
1.基本用法
格式:sort(数组名+n1,数组名+n2)
对[n1,n2)区间内的元素继续排序,特别注意不包括n2,默认为由小到大排序.(升序)
若要由小到大排序(降序),sort(数组名+n1,数组名+n2,greater())
(T为基本数据类型)
2.特定规则用法
格式:sort(数组名+n1,数组名+n2,自定义规则)
@. sort(数组名+n1,数组名+n2,cmp)
bool cmp(int a,int b) //由小到大
{
return a<b;
}
bool cmp1(int a,int b) //由大到小
{
return a>b;
}
@@.sort(数组名+n1,数组名+n2,structRule)
此处补充排序规则结构体的定义格式:
struct 结构名{
bool operator()(const T &s1, const T &s2){
return 判断条件;
}
}; //T为数据类型,s1和s2为变量名,这个是模板,只用修改T、结构名、判断条件即可
举个例子
struct rule{
bool operator ()(const int &s1,const int &s2)const{
return s1<s2;
}
};
下面是代码实现
#include<iostream> #include<algorithm> //用到sort函数,要写头文件 #include<vector> using namespace std; bool cmp(int a,int b) { return a<b; //由小到大 } struct rule{ bool operator ()(const int &s1,const int &s2)const{ return s1<s2; } }; void sort1() //常规用法 { int a[]={1,4,2,3,5}; int n=5; sort(a,a+5); //默认由小到大排序 ,若要由大到小改为sort(a,a+5,greater<int>()); for(int i=0;i<5;i++) { printf("%d ",a[i]); } } void sort2() //自定义规则 { int a[]={1,4,2,3,5}; int n=5; sort(a,a+5,cmp); //按cmp的规则排序 for(int i=0;i<5;i++) { printf("%d ",a[i]); } } void sort3() //自定义排序规则结构体 { int a[]={1,4,2,3,5}; int n=5; sort(a,a+5,rule()); //按rule的规则排序 for(int i=0;i<5;i++) { printf("%d ",a[i]); } } void sort4() //用vector(需要有一定的c++基础) { vector<int> a; //创建动态数组 a.push_back(2); //动态数组放入元素 a.push_back(1); a.push_back(3); sort(a.begin(),a.end()); for(int i=0;i<a.size();i++) { printf("%d ",a[i]); } printf("\n"); vector<int>::iterator p; //用迭代器指向动态数组 for(p=a.begin();p!=a.end();p++) { printf("%d ",*p); } } int main() { sort1(); printf("\n"); sort2(); printf("\n"); sort3(); printf("\n"); sort4(); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。