冒泡排序算法思想:两两相邻的元素进行比较,并且有可能的话进行交换, 假设现在有一组数据:5 1 4 2 8 现在要对这组数据进行升序排列。我们利用冒泡排序的思想。
第一趟:5 1 4 2 8--->1 5 4 2 8--->1 4 5 2 8--->1 4 2 5 8--->1 4 2 5 8
一趟冒泡排序解决一个数字,第一趟解决8后,剩余的待排序的数字为1 4 2 5 (8)<对8 不进行排序,因为第一趟已经把它排到应该排序的位置> 接下来,进行第二趟排序:
第二趟:1 4 2 5 (8)--->1 4 2 5 (8)--->1 2 4 5 (8)--->1 2 4 5 (8)
第二趟冒泡排序解决了数字5,剩余的待排序的数字是1 2 4 (5) (8)
第三趟:1 2 4 (5) (8)--->1 2 4 (5) (8)--->1 2 4 (5) (8)
第三趟冒泡排序解决了数字4,剩余的待排序的数字是1 2 (4) (5) (8)
第四趟:1 2 (4) (5) (8)--->1 2 (4) (5) (8)
通过以上分析,我们可以看到 5 个数字进行了 4 趟冒泡排序之后,才达到了我们想要的效果。如果有n个数字,我们需要n-1趟冒泡排序。
而我们又发现,在第1趟排序中,5个数字待排序,我们进行了4次比较,在第2趟冒泡排序中,有4个数字待排序,我们进行了3次比较,由此我们可以得出在第 k 趟中,我们需要进行n-k次比较。
通过以上分析,我么可以用代码实现:
以上程序的运行结果如下: