穩定性
// 上面的迴圈退出後,把剩餘的元素依次填入到temp中
// 以下兩個while只有乙個會執行
while
(p1 <= mid)
while
(p2 <= r)
// 把最終的排序的結果複製給原陣列
for(i =
0; i < temp.length; i++
)}o(nlogn)
o(n),歸併排序需要乙個與原陣列相同長度的陣列做輔助來排序
歸併排序是穩定的排序演算法,temp[i++] = arr[p1] <= arr[p2] ? arr[p1++] : arr[p2++];這行**可以保證當左右兩部分的值相等的時候,先複製左邊的值,這樣可以保證值相等的時候兩個元素的相對位置不變
資料結構 十大經典排序演算法
0演算法概述 0.1演算法分類 十種常見排序演算法可以分為兩大類 比較類排序 通過比較來決定元素間的相對次序,由於其時間複雜度不能突破o nlogn 因此也稱為非線性時間比較類排序。非比較類排序 不通過比較來決定元素間的相對次序,它可以突破基於比較排序的時間下界,以線性時間執行,因此也稱為線性時間非...
資料結構 十大經典排序演算法之氣泡排序
演算法思想 氣泡排序重複地遍歷待排序的數列,每次比較兩個相鄰元素,如果它們的順序錯誤就把它們交換。重複地進行遍歷直到沒有再需要交換時表示數列已經排序完成。演算法步驟 比較相鄰的元素 若第乙個比第二個大,則交換 遍歷開始第一對到結尾最後一對,執行步驟1 重複步驟1 2,直到排序完成。可改進的氣泡排序 ...
資料結構 十大經典排序演算法之選擇排序
第一部分 演算法思想 選擇排序是一種簡單直觀的排序演算法,首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。第二部分 演算法步驟 初始狀態 無序序列為r 0,n 1 長度n,有序區為空 第...