完善程序练习

10 分钟

完善程序题会给你一段挖了空的代码,让你填循环边界和比较条件。第一步永远是"先认出它是哪种排序"——看到"相邻两个比较、不对就交换",那就是冒泡排序。认出来了,套路就填得出。

#include <iostream>
using namespace std;

int main() {
    int a[5] = {5, 2, 4, 1, 3};
    for (int i = 0; i < 5 - 1; i++)          // 外层轮数
        for (int j = 0; j < 5 - 1 - i; j++)  // 内层相邻比较
            if (a[j] > a[j + 1]) {           // 大的往后换
                int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;
            }
    for (int x : a) cout << x << " ";
    cout << endl; // 1 2 3 4 5
    return 0;
}

最容易填错的是内层边界 5-1-i:因为每轮结束后最大的已经"沉"到末尾,下一轮就不用再比它了。想清楚每个空的含义再填,别硬套模板。

小纸条

看到"相邻比较并交换",是哪种排序?

登录 后可看答案

完善程序练习 · C++ 入门 · op599 课程