高等排序法是什麼?

高等排序法的平均時間複雜度為:O(n*logn)


快速排序法(Quick sort)

步驟:

1.取第一筆作為控制鍵(pivot key)

2.由左向右開始找(i=1,2,3,....),找到一筆值K(i)>pivot key(意思就是找大)

由右向左開始找(j=1,2,3,....),找到一筆值K(j)<pivot key(意思就是找小)

3.將K(i)與K(j)交換,並退回步驟二,如果i與j交錯,\則stop,將pivot key與K(j)交換

與insertion sort不同的是insertion是將K(i)的值放在部分以排序好的資料中,但quick sort是將值放在整個檔案中正確的位置上。

EX:

init[5]3271
1132[5]7

說明:第一次k(i)=7,k(j)=1,swap後->5,3,2,1,7

當i,j繼續探索,發現i與j交錯,所以stop,並切將K(j)=1與pivot key=5交換

變為:1,3,2,5,7

1.時間複雜度:

最好,平均:O(n*logn)

最差:O(n²)

(如果遇到降序或升序的排序組合,則n 筆數字都會成為pivot key,比較(n-1)次=n(n-1)次

2.為Unstable sort

3,2,5,5+,1

3,2,1,5+,5 (交換後位置改變)

合併排序法(Merge sort)

將兩筆以排序好的檔案儲存成另一筆排序好的檔案。

1.時間複雜度:

最好、最差、平均:O(n*logn)

2.為一stable sort

3.需要額外的空間O(n),為一外部搜尋法

堆積排序法(Heap sort)

1:需要先建立一顆complete binary tree

2:調整成heap tree並輸出heap tree的root

3:將最後一個節點的直放去root,再回到步驟2

分析:

1.時間複雜度:

最好,最差,平均:O(n*logn)

2.space complexity:O(1)

3.Unstable sort

因為在Top-down的調整過程中會刪除最後節點,移至root,5,5+位置會交換。

EX:7,5+,1,2,5

->7,5,5+,2,1

heap tree 的定義

Max(Min) heap tree:

1.為一顆complete binary tree

2.root為最大(小)值

3.父節點>(<)子節點

建立heap tree 有兩種method:

1.top down(add one by one):

T.C.為:O(n)

2.buttom up(arrange in once)

T.C.為:O(logn)