从大到小排

8 分钟

想让队伍从高到矮,规则不用重学,只把"谁大往后挪"改成"谁小往后挪"。一句话:把比较的符号反个方向,其余原封不动。

#include <iostream>
using namespace std;
int main() {
    int a[5] = {5, 3, 4, 1, 2}, n = 5;
    for (int i = 0; i < n - 1; i++)
        for (int j = 0; j < n - 1 - i; j++)
            if (a[j] < a[j+1]) {           // 大于号改成小于号
                int t = a[j]; a[j] = a[j+1]; a[j+1] = t;
            }
    for (int i = 0; i < n; i++) cout << a[i] << " "; // 5 4 3 2 1
    return 0;
}

只需改判断里那一个比较符号 ><,交换的那三行一个字都别动。要是把交换也一起改了,反而又变回从小到大了。

小纸条

冒泡改成从大到小,要改哪里?

登录 后可看答案

从大到小排 · C++ 入门 · op599 课程