冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,以将当前序列的最小值交换到当前序列最前端为一轮结束,需要(length-1)轮,感觉数据是一个一个往上冒出来,这个现象类似“冒泡泡”,所以称为冒泡排序。
1、顺序存储结构实现冒泡排序
首先我们需要一个待排序的数组 arr[10] = {0, 9, 1, 5, 8, 3, 7, 4, 6, 2},其中arr[0]=0用做哨兵或临时变量所以不参与排序,所以数组下标从1开始,有效长度len=9,实际长度为10。
然后我们还需要交换数据的操作:
void swap_arr(int *arr, int i, int j)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
1.1、最简单的冒泡排序
void Simple_Bubble_Sort(int *arr, int len)
{
for (int i=1; i<len; i++)
for (int j=1; j<len; j++)
if (arr[j] > arr[j+1]) /*如果反序就交换*/
swap_arr(arr, j, j+1);
}
最简单的冒泡排序从严格意义来说,并不是冒泡排序,因为不符合“冒泡”的思想,它应该是最简单的交换排序。
它的思路:持续(length-1)轮,每一轮整个序列两两相邻记录的关键字都进行比较交换,这样整个序列一定会变为有序。<