冒泡排序
原理是相邻的两个元素进行比较,如果满足右边的值比左边的值小则交换这两者的位置。一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作。
如果对数组8,5,1,5,3,2,4进行冒泡排序则第一次冒泡排序的过程:
第一次冒泡排序过程
整个冒泡排序算法的过程演示:
冒泡排序全过程演示
用java代码实现上面的演示过程:
最后几步冒泡排序动态演示图:
在最后几步的时候数组已经有序则不需要再执行比较操作了,所以存在优化思路是如果一次冒泡的过程中没有发生数据交换操作则说明数据已经有序则提前停止后续的冒泡操作。一种极端的情况是数组本身有序则执行一次冒泡排序就可以了,时间复杂度变成O(n)
最后总结:
冒泡排序是一种稳定的排序算法(比如一组数组8,5,1,5,3,2,4按照从小到大排序后为1,2,3,4,5,5,8。如果排序后两个5的前后顺序没有发生变化则是稳定的排序算法,反之则是不稳定的排序算法。)
冒泡排序的时间复杂度是O(n²)
版权声明: 本文为 InfoQ 作者【wjchenge】的原创文章。
原文链接:【http://xie.infoq.cn/article/02ee2d998c92dde5ecafc5b44】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论