歸併排序遞迴實現

2021-07-11 06:14:34 字數 763 閱讀 6202

**:

#include #include #define length 10

using namespace std;

void merge(int *ar, int *br, int start, int

mid, int

end)

else

}if (i>mid)

}else

}}void copy(int *ar, int *br, int start, int

end)

}void msort(int *ar,int start, int

end)

}void mergesort(int *ar, int length)

void print(int *ar, int length)

cout << endl;

}int main()

; int length = sizeof(ar) / sizeof(ar[0]);

mergesort(ar, length);

print(ar, length);

return 0;

}

時間複雜度:

最好,最壞,平均情況下為:o(nlogn)

空間複雜度:

o(n)

歸併排序是一種比較占用記憶體,但卻效率比較高且穩定的演算法。

歸併排序的遞迴演算法,是一直遞迴到只有乙個元素,但是在回撤的時候漸漸有序。最終達到乙個有序的序列。

歸併排序(遞迴實現)

演算法思想 1 歸併排序是利用遞迴與分治技術,將資料序列劃分成為越來越小的半子表,再對半子表排序,最後再用遞迴步驟將排好序的半子表合併成為越來越大的有序序列。其中 歸 代表的是遞迴的意思,即遞迴地將陣列折半地分離為單個陣列。例如,陣列 5,2,1,7 會先折半,分為 5,2 和 1,7 兩個子陣列,...

歸併排序遞迴實現

對於歸併排序,不僅有遞迴的實現方式,還有迭代的實現方式。迭代法實現歸併排序的 如下 include include define max size 10 實現歸併,並將最後的資料放入到list1中 void merging int list1,int list1 size,int list2,int...

歸併排序(遞迴實現)

歸併排序應該是穩定性排序中時間效率最高的演算法 歸併排序概述圖 如圖,首先將一組序列遞迴拆分 分解 成多組,每組中只含乙個元素。之後再歸併 merging函式即為歸併過程 include include define maxsize 10 排序序列長度 void merging int left,i...