相同點: 冒泡排序和插入排序都是把數組分成兩塊,一塊是已排好序,剩下的是未排好序。按照標准的時間復雜度和空間復雜度來算,兩個算法都是O(n^2)時間復雜度,和常數空間復雜度。兩個算法都是通過一步一步的移動元素達到最后的位置。
有兩點差異我比較關注:元素比較的次數和元素移動的次數。
元素比較次數可以理解為時間復雜度,我理解通過標准時間復雜度算出來的是最壞的情況,所以可以更細化下其他的情況。
再比較元素比較次數之前先看下元素移動的次數,因為兩個算法都會通過一步一步移動元素的方法來讓元素達到它最終的位置。顯而易見,兩個算法元素移動次數是相同的。因為元素都是一步一步移動,而且移動方向都是單向。
再看比較次數,插入排序的每次比較都會伴隨原始移動,也就是說每次比較都會對元素到達它最終的位置有作用。但是冒泡排序中可能存在某次比較並不移動元素的情況。所以冒泡排序的比較次數是大於等於插入排序的。
綜上得出結論,插入排序的性能是大於等於冒泡排序的。
