sort函数使用方法:
sort(start,end,排序方法);
注意,end地址的数是不参加排序的,排序方法默认升序排序
若需要改变排序规则,则需写一个bool型的compare()函数:
bool compare(int a,int b){//函数返回true时,第一个参数a将排在第二个参数b的前面
return a>b;
}
如:
#include<iostream> #include<algorithm> //头文件包含sort()函数 using namespace std; bool compare(int a,int b) { return a>b; } int main() { int a[10]={3,4,5,2,1,0,7,8,9,6}; sort(a,a+10);//默认升序 for(int i=0;i<10;i++){ cout<<a[i]; } cout<<endl;//下一行 sort(a,a+10,compare);//降序 for(int i=0;i<10;i++){ cout<<a[i]; } cout<<endl; return 0; }
如果需要按自己的方法排序,则只需修改compare函数即可。
如够买大米需要货比三家,Rice为大米的结构体,arr为不同店家组成的数组,weight代表大米重量,cost代表购买大米需要支付的金钱,若想按照性价比进行排序,compare函数应该改为:
struct Rice{ double weight; double cost; }; Rice arr[100]; bool compare(Rice x,Rice y){ return x.weight/x.cost>y.weight/y.cost; }
然后在主函数中调用时,sort(arr,arr+100,compare);即可按性价比从高到低进行排序。