sort函数的使用

2020-05-06  本文已影响0人  与时间共舞

sort排序又叫快速排序(快排)
1、需要引入头文件

#include <algorithm>

2、sort函数的引用

  1. 默认的sort函数是按升序排。
    sort(a,a+n); //两个参数分别为待排序数组的首地址和尾地址
  2. 可以自己写一个cmp函数,按特定意图进行排序。
    sort(a,a+n,cmp);

1、sort排序之升序排列

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
    int n;
    cin>>n;
    int a[n];
    for(int i=0; i<n; i++){
        cin>>a[i];
    }
    sort(a,a+n);
    for(int i=0; i<n; i++){
        cout<<a[i]<<endl;
    }
    return 0;
}

2、sort排序之降序排列

#include <iostream>
#include <algorithm>
using namespace std;
int test(int x,int y){
    return x>y; //降序排列
//  return x<y; //升序排列 
}
int main(){
    int n;
    cin>>n;
    int a[n];
    for(int i=0; i<n; i++){
        cin>>a[i];
    }
    sort(a,a+n,test);
    for(int i=0; i<n; i++){
        cout<<a[i]<<endl;
    }
    return 0;
}

3、sort排序之结构体排序

/**
现在有n名学的姓名,年龄和考试成绩,对这写数据进行排列
要求: 分数按从高往低排序
      如果分数相同,按名字先后顺序进行排列 
*/ 
#include <iostream>
using namespace std;
struct stu{
    int age,fen;
    string name;
};
//注意cmp的参数x,y的类型要和结构体stu类型相同 
int cmp(stu x,stu y){//排序方法 
    if(x.fen>y.fen){
        return 1;
    }else if(x.fen==y.fen && x.name>y.name){
        return 1;
    }
    return 0;
}
int main(){
    int n;
    stu  st[1000];
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>st[i].name>>st[i].age>>st[i].fen; 
    }
    sort(st+1,st+n+1,cmp);//快排 
    for(int i=1;i<=n;i++){
        cout<<st[i].name<<" "<<st[i].age<<" "<<st[i].fen; 
    }
    return 0;
}

上一篇 下一篇

猜你喜欢

热点阅读