冒泡排序详解
算法思想
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; }
运行结果


浙公网安备 33010602011771号