歸併排序的內容可在紫書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位置向前搜找到第乙...