演算法hebingpaixu函式的遞迴過程只是將待排序的集合一分為二,直至待排序集合只剩下1個元素為止。
然後不斷的合併2個排好序的陣列段。(它可以和快速排序時間複雜度一致)
舉個例子,大致是按這樣的情況進行的
初始序列[8] [4] [5] [6] [2] [1] [7] [3]
歸併到b [4 8] [5 6] [1 2] [3 7]
複製到a [4 8] [5 6] [1 2] [3 7]
歸併到b [4 5 6 8] [1 2 3 7]
複製到a [4 5 6 8] [1 2 3 7]
歸併到b [1 2 3 4 5 6 7 8]
複製到a [1 2 3 4 5 6 7 8]
#include#include#includeusing namespace std;
void hexinsuanfa(int a,int b,int l,int mid,int r)
if(la>mid)
else for(int j = la;j<=mid;j++) b[lb++] = a[j]; }
void hebingpaixu(int a,int left,int right,int n) {
int i;
int *b = new int[n];
if(left>n;
int *hr = new int[n];
cout<<"輸入你要排序的陣列內容:"<>hr[i];
hebingpaixu(hr,0,n-1,n);
for(i=0;i
合併排序演算法
陣列ary的m個元素,ary p ary q ary q 1 ary r 已按曾序排序 使得ary p ary r 按曾序排列 void clibrary merge int ary,int p,int q,int r,int m else k 0 for i p i r i ary i bp k ...
合併排序演算法
主要思想 不斷將已經有序的子陣列a p.q 和a q 1.r 合併為新的有序的陣列a p.r 具體過程可如下操作 分解 將n個元素分成各含n 2個元素的子串行 解決 對兩個子陣列遞迴地排序 合併 合併兩個已經有序的子陣列得到最終的有序陣列。合併 歸併排序 分治策略 include include u...
合併排序演算法
合併排序是用分治策略實現的排序演算法之一。基本思想是 將待排序的元素分成大小大致相同的兩個子集合,分別對這兩個子集合進行排序,最後將排好序的子集合合併成所需要的集合。此方法的時間複雜度t n o nlogn 這種排序方法漸進最優演算法。合併排序 遞迴 include using namespace ...