我试图理解一些排序算法,但我很难看到冒泡排序和插入排序算法的区别。
我知道两者都是 O(n 2 ),但在我看来,冒泡排序只是将数组的最大值冒泡到每次传递的顶部,而插入排序只是将最低值下降到每次传递的底部。他们不是在做同样的事情,但方向不同吗?
对于插入排序,比较/潜在交换的数量从零开始,并且每次都增加(即 0、1、2、3、4、...、n),但对于冒泡排序,会发生相同的行为,但在排序(即 n,n-1,n-2,... 0),因为冒泡排序不再需要与排序后的最后一个元素进行比较。
尽管如此,似乎一致认为插入排序总体上更好。谁能告诉我为什么?
编辑:我主要对算法工作方式的差异感兴趣,而不是它们的效率或渐近复杂性。