问题描述:假如现在有一个数组arr[ ],里面有{ 3, 2, 1, 4, 7, 6, 5,9, 8 }九个元素,现要将其按升序排列。要求用冒泡排序实现。
问题分析:
- 有10个元素,那么要进行9趟冒泡排序,每趟把一个元素排到最后;
- 第一趟中,10个元素,那么要相互比较9对,
- 第二趟中,9个元素,那么要相互比较8对,
之所以元素较第一趟少了一个,是因为最大的那个元素已经去到最后边了,占了一个位置,就不用再那它去比较。 - 第三趟中,8个元素,那么要相互比较7对,
- ...
- 因此首先要做的是确定冒泡的趟数,然后针对某一趟内的元素进行排序。
代码实现:(首先自定义了函数bubble_sort)
#include <stdio.h> //冒泡排序 void bubble_sort(int arr[], int sz) { int i = 0; int j = 0; for (i = 0; i < sz - 1; i++) //决定冒泡排序的趟数 { for (j = 0; j < sz - 1-i; j++) //对每一趟进行处理(排序) { if (arr[j] > arr[j