冒泡排序详解

发布时间 2023-12-13 18:04:08作者: 帅帅的编程之路

算法思想

1、两两相邻的元素进行比较,如果前面元素大于后面元素就交换两个元素的位置,最终的结果是最大的一个元素移动到了最后的位置。 我们暂称这个过程为冒泡。
2、如果有n个元素那么【冒泡操作】重复n-1次即可排序完成。

 

 

 

 学习过程思想

1.一共两层for循环

2.第一个for循环是控制进行几次冒泡的,所以循环的次数的是待排序序列元素个数减一次。

3.第二个for循环是控制每一趟冒泡两两元素间进行比较的,相邻两两比较,若反序则交换。

  注意:j从0到n-1,j+1从1到n这个地方我第一次忽略-1,即j从0到n,那么j+1就会超过了排序序列的最大长度。

代码实践

#include <stdio.h>

int main() {
    int arr[10];
    printf("请输入10个数据:");
    for (int i = 0; i < 10; ++i) {
        scanf("%d", &arr[i]);
    }
    int temp;
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10 - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }

    printf("升序输出数组:");
    for (int i = 0; i < 10; ++i) {
        printf("%d ", arr[i]);
    }
    return 0;
}

运行结果