ACM 歸併排序與快速排序(遞迴與分治)

2021-09-10 16:00:40 字數 774 閱讀 9188

歸併排序的內容可在紫書p226裡面檢視,紫書裡的**寫得十分簡潔,高效,重點要理解好循壞條件的控制。

快排可參考以下的部落格:

歸併排序時間複雜度:o(nlogn);快排時間複雜度:平均o(nlogn),最慢o(n^2)。

歸併排序穩定但佔空間比較大,快排佔空間較小但不穩定。

以下為**實現:

#includeusing namespace std;

int a[105],t[105]; //t[105]作為臨時的輔助空間

void merge_sort(int x,int y) //歸併排序[x,y)

a[i]=x;

quick_sort(x,i);

quick_sort(i+1,y); }}

int main()

printf("\n");

merge_sort(0,n);

for(i=0;i<=n-1;i++)

printf("%d ",a[i]);

printf("\n\n");

//快速排序

scanf("%d",&n);

for(i=0;i<=n-1;i++)

printf("\n");

quick_sort(0,n);

for(i=0;i<=n-1;i++)

printf("%d ",a[i]);

printf("\n");

return 0;

}

遞迴 快速排序與歸併排序

includeint a 101 n 定義全域性變數,將在子函式中呼叫 void quicksort int left,int right 最終將基數歸位 基數歸中 a left a i 將i,j相遇時的那個值作為下次遞迴呼叫的基!每個進行遞迴呼叫可以確定乙個基數字置 將基數擺到正確位置 a i t...

歸併排序與快速排序

1.演算法簡介 歸併排序和快速排序都是採用遞迴的結構實現的,不同的是歸併排序在遞迴過程中有合併子串行的過程,而快速排序中沒有,但是快速排序中有較為複雜的劃分過程。二者的平均時間複雜度均為o nlgn 其中快速排序的係數較小 歸併排序最壞情況複雜度為o nlgn 快排在最壞情況下時間複雜度為o n 2...

快速排序與歸併排序

簡單總結一下快速排序和歸併排序的用法,這兩種方法十分省時,在題目中常用。快速排序 基本思想通過一趟排序將代拍記錄分成兩部分,一部分記錄關鍵字比另一部分小,再對這兩部分記錄繼續排序,達到整個序列有序。具體做法是附設兩個指標i和j,初值分別為l,r,任選乙個記錄做樞紐取mid,首先從j位置向前搜找到第乙...