1
neosfung 2017-11-24 11:47:44 +08:00
是的
冒泡其实就是插入排序的一种变种,实现方式不一样而已 |
2
coderluan 2017-11-24 12:01:56 +08:00
冒泡排序和插入排序的算法复杂度是一样的,所以在我眼中,他们根本没区别......
|
3
czheo 2017-11-24 12:22:40 +08:00
差别挺大的啊。
最大区别:冒泡时在 [未排序的部分] 里面找最大(或小),放到一端。插入是往 [已排序好] 的部分里面插入当前数。 不变条件(invarient)不同:冒泡是,最大的数会先被排序好到一端。插入是,当前点的一侧是已排序的( sorted ),这些数并不一定是最大的。 循环终止条件不同:冒泡必须遍历未排序的所有数字才能找到最大,插入找到合适位置就可以停。 |
4
czheo 2017-11-24 12:32:19 +08:00
之前我总结的: https://medium.com/@czheo/%E6%8E%92%E5%BA%8F-b5ef06533b11。直接看 O(n^2)排序部分。
|
5
czheo 2017-11-24 12:44:49 +08:00
|
6
liuminghao233 2017-11-24 12:56:23 +08:00 via iPhone
升级版希尔排序可能会好一些
|
7
blackjar 2017-11-24 15:10:02 +08:00
冒泡跟选择差别不大才对吧 插入就是另外一种思路了
冒泡跟选择都会把待排序列中最大或者最小值每次排出 插入则不是 另外冒泡在每个单元操作中都要交换一次 而选择通常只是对 flag 的位置赋值一次(所以冒泡通常会更慢) 当然这三种都是 O(n2)的排序 这个是一样的。 |