一、算法思想
冒泡排序是一种简单的排序算法。一次从前往后地走访待排序的元素序列被称为一趟,每一趟都会把相邻的两个元素的错误顺序交换,将当前趟次中最大或者最小的元素像“冒泡泡”一样冒到最后面,反复地走访元素序列,直到所有元素都排好序。
二、举例
待排序列:3,1,7,5,8,9,0,2,4,6
排序规则:从小到大
第一趟:
3 比 1 大,交换。
3 比 7 小,不动。
第一趟完成,最大数 9 被冒到了最后面。
第二趟:
第二趟完成,最大数 8 被冒到了倒数第二个。
。。。。。。
此次类推,直到所有元素排序完成。
三、代码及运行结果
四、算法优化
如果待排序列为:1,0,2,3,4,5,6,7,8,9
在第一躺结束后,所有元素就已经排序好,后面还有很多趟是没有必要执行的,所以我们需要优化冒泡排序算法。每趟设置一个标记 flag 初始为0,表示此趟未交换顺序;一旦发生相邻元素的交换,就将 flag 置 1 。如果一趟结束后,没有发生相邻元素的交换,就表明序列已经排序完毕,结束排序。
代码及运行结果: