C++中sort函数的简单使用

#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 普通排序
// 缺省的时候是升序,声明后可以使其由大到小
bool cmp(int a, int b){
    return a > b;
}

// 可以对浮点数排序,也可以时字符数组,当然 元素的类型要一致
int main1() {
    int a[6] = {9,4,11,4,1,6};
    sort(a, a + 4, cmp);
    for (int i = 0; i < 6 ; ++i) {
        printf("%d\t", a[i]);
    }
    printf("\n");
    sort(a, a+6, cmp);
    for (int i = 0; i < 6 ; ++i) {
        printf("%d\t", a[i]);
    }
    return 0;
}

// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 结构体的排序
struct node{
    int x, y;
}ssd[10];

bool cmp1(node a, node b){
    return a.x > b.x;
}

// 如果x不相等, 则按照x从大到小排序,如果相等,就按照y从小到大排序
bool cmp2(node a, node b){
    if(a.x != b.x) return a.x > b.x;
    else return a.y < b.y;
}

int main2(){
    ssd[0].x = 2;
    ssd[0].y = 2;
    ssd[1].x = 1;
    ssd[1].y = 3;
    ssd[2].x = 2;
    ssd[2].y = 1;
    sort(ssd, ssd+3, cmp2);
    for (int i = 0; i < 3; ++i) {
        printf("%d %d\n", ssd[i].x, ssd[i].y);
    }
    return 0;
}

// %%%%%%%%%%%%%%%%%%%%%%%%%%%  vector 排序
int main3(){
    vector<int> vi;
    vi.push_back(3);
    vi.push_back(2);
    vi.push_back(1);
    sort(vi.begin(), vi.end(), cmp);
    for (int i = 0; i < 3; ++i) {
        printf("%d ", vi[i]);
    }
    return 0;
}

// string 排序
int main(){
    string str[3] = {"bbbb", "cdd", "tttt"};
    sort(str, str + 3);
    for (int i = 0; i < 3; ++i) {
        cout << str[i] << endl;
    }
    return 0;
}

版权声明:本文为qq1641070658原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>