stl中就自带了排序函数sort,sort函数对给定区间所有元素进行排序
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int test[]={2,4,1,23,5,76,0,43,24,65};
int len = 20;
sort(test, test+len); //得到默认的升序结果
for(int i=0;i<len;i++)
cout<<test[i]<<"|";
cout<<endl;
return 0;
}
自定义比较函数
上面的输出结果将是把数组test按升序排序,怎么样得到降序排列呢?
需要编写一个比较函数来实现,接着调用三个参数的sort:sort(begin,end,compare)。
#include<iostream>
#include<algorithm>
using namespace std;
// compare本来默认return a<b;
bool compare(int a,int b)
{
return a>b; //降序排列
}
int main(){
int test[]={2,4,1,23,5,76,0,43,24,65};
int len = 20;
sort(test, test+len, compare); //得到的降序结果
for(int i=0;i<len;i++)
cout<<test[i]<<"|";
cout<<endl;
return 0;
}
string 与 sort
根据ASCII码表进行升序排列。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
string s1 = "}s1234AaBaCcDd0";
sort(s1.begin(), s1.end());
cout<<s1<<endl; // 01234ABCDaacds
}