1、每次比较相邻的元素,如果第一个比第二个大(或小),就交换他们两个。
2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大(或小)的数。
3、针对所有的元素重复以上的步骤,除了最后已经选出的元素
4、持续每次对越来越少的元素(无序元素)重复上面的步骤,直到没有任何一对数字需要比较,则序列最终有序。
代码如下:
仔细思考下,冒泡排序存在一个可优化的点,很多资料里面提到提前结束,也就是上面程序里面的减少循环次数,比如我们有个数组[1,2,4,5,3],如果按照上面的代码执行,i则从0到4,循环四次,而实际上1、2已经有序,只需要冒3次泡就可以完成了,代码怎么实现那?实际上就是增加提前结束的条件,当某一次循环如果没有做过任何冒泡操作,说明该数组应有序,则可以提前结束,是不是有种豁然开朗的感觉啊~~。下面我们上代码:
经典的冒泡排序完成。反过来,如果要做用冒泡的方法做倒叙排序,怎么实现?思考一下,稍作修改即可,代码如下: