怎么做
  1. 题面里的虚线方框就是要填的空
  2. 点候选项,它会填进当前高亮的那个空
  3. 点已填好的空,可以把选项取回来重选
  4. 全部填满后「提交」才会亮起
卡住了就点右下角的 👩‍🏫 问 AI 老师,她会给提示但不直接给答案。

冒泡一趟走完是什么样

👁️ 20 人浏览 💬 0 人评论 ❤️ 添加收藏

冒泡第 1 趟:相邻两个比,前面的大就交换

1
4
2
5

a[0]

a[1]

a[2]

a[3]

一趟下来,最大的 5 沉到了最后

冒泡排序(从小到大):从头开始,相邻两个比一比,前面的大就交换;这样走完一趟,最大的数就「沉」到了最后。下一趟最后一个不用管了,再对剩下的做一遍……n 个数做 n - 1 趟。写成两层循环:

#include <stdio.h>

int main(void) {
    int a[5] = {6, 3, 9, 1, 5};
    int i, j, k, t, cnt = 0;
    for (i = 0; i < 4; i++) {             /* 第 i + 1 趟,一共 5 - 1 趟 */
        for (j = 0; j < 4 - i; j++) {     /* 已经沉底的 i 个不用再比 */
            cnt++;
            if (a[j] > a[j + 1]) {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
        for (k = 0; k < 5; k++)
            printf("%d ", a[k]);
        printf("\n");
    }
    printf("%d\n", cnt);
    return 0;
}

程序每趟结束打印一次数组。第 1 趟后是【0】,第 2 趟后是【1】,最后一行输出的比较次数是【2】。

请登录后作答。
去登录
👩‍🏫
AI
💬 题目评论
🔒 登录并作答后可看讨论