算法之稳定排序

stable的作用

一句话来说,带有stable的函数可保证相等元素的原本相对次序在排序后保持不变。

一道例题

题目描述
小h是一个很有规划的人,他列了很多事情,标注了优先级(1-9)也标注了必要程度(1-5)必要程度大的排前面,必要程度一样优先级大的排前面,必要程度一样,优先级一样不改变初始顺序。因为事情太多了,所以小h需要你帮忙…

输入
第一行一个数字n表示有n个事情
后n行每行两个数字a,b表示事情的优先级和必要程度
(n<=10000)

输出
将所有事情排序输出(只输出初始序号)

样例输入 Copy
2
9 3
1 4

样例输出 Copy
2 1

#include <iostream>
#include<algorithm>
#define ll long long
using namespace std;
struct node
{
    
    
    int a, b, id;
}s[10005];
bool cmp(const node& l, const node& r) 
{
    
    
    if (l.b != r.b)
        return l.b > r.b;
    else 
        return l.a > r.a;
}
int main() 
{
    
    
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
    
    
        scanf("%d %d", &s[i].a, &s[i].b);
            s[i].id = i;
    }
    stable_sort(s + 1, s + 1 + n, cmp);
    for (int i = 1; i <= n; i++)
        printf("%d ", s[i].id);
    printf("\n");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_52297656/article/details/119857214