为什么插入排序比冒泡排序更受欢迎

  1. 排序总览


    image.png
  1. 冒泡排序


    image.png
image.png

插入一些小知识:

有序度 :a[j] < a[j+1]
逆序度 :a[j] > a[j+1]
满有序度 : 完全有序的数组,有序度是 n*(n-1)/2
逆序度 = 满有序度 - 有序度 = 交换次数

  1. 插入排序


    image.png
image.png
  1. 选择排序:找到未排序最小元素和前面的数据交换,是一种不稳定排序。比如 5,8,5,2,9 这样一组数据,使用选择排序算法来排序的话,第一次找到最小元素 2,与第一个 5 交换位置,那第一个 5 和中间的 5 顺序就变了,所以就不稳定了。(直接pass)

  2. 总结:冒泡排序和插入排序都是稳定排序,且是一种原地排序--空间复杂度为O(1),时间复杂度都为O(n2)。但是由于冒泡排序的操作比插入排序复杂--冒泡排序需要3个赋值操作,而插入排序只需要1个。使得插入排序计算的更快,性能更优。所以插入排序更受欢迎。


    image.png

-- 摘自《数据结构与算法之美》11节

你可能感兴趣的:(为什么插入排序比冒泡排序更受欢迎)