前面說過最原始的複雜度爲 O(n2) 的冒泡和選擇排序,也跳躍到了複雜度爲 O(n log n) 的快速排序,現在又再看一個複雜度同樣爲 O(n2) 的插入排序。從排序名稱結合代碼我們理解了爲什麼叫做冒泡或是選擇,快速排序自認高名,那麼何以這又謂之插入排序呢?是怎麼插入,從左邊往右邊插,還是從右邊往左邊插,這得搞清它的排序原理:
它在列表較低的一端維護一個有序的子列表(從最左端一個元素開始),並逐個將每個新元素(高端的)"插入"這個子列表。插入的時候遍歷低端列表,找準位置插入便是,插入點後的元素需後移,當所有高端的元素插入完成了,整個列表就變得有序了。
整個排序操作示意圖如下: 閱讀全文 >>