這是一種自上而下先將一組陣列拆分為兩組,不斷的往下拆分,當每組只剩下乙個的時候遞迴結束
然後在開闢乙個新的陣列 aux,將這組資料進行儲存。然後兩組陣列的元素進行比較,再重新賦予給a陣列
1.這是一種自上而下的遞迴演算法。
#include #include using namespace std;
void mergeguibing(int a,int l,int mid ,int r)
i=l;
j=mid+1;
for(k=l;k<=r;k++)
else if(j>r)
else if(aux[i-l]=r) return ;
mid=(l+r)/2;//如果嚴謹的話,l+r可能會越界,注意範圍
//把一組分成兩組
guibingpaixu(a,l,mid);
guibingpaixu(a,mid+1,r);
//每兩組和成為一組
mergeguibing(a,l,mid,r);
}int main();
for(int i=0;i<10;i++)
i=l;
j=mid+1;
for(k=l;k<=r;k++)
else if(j>r)
else if(aux[i-l]=r) return ;
mid=(l+r)/2;//如果嚴謹的話,l+r可能會越界,注意範圍
//把一組分成兩組
guibingpaixu(a,l,mid);
guibingpaixu(a,mid+1,r);
//每兩組和成為一組
mergeguibing(a,l,mid,r);
}*/void guibingpaixubu(int a,int n)//這個n是陣列的元素個數
else
}a[j]=e;//然後將e賦值給a[j]
}for(i=0;imid)//當前兩組中的一組已經新增到a中完成了,剩下的另一組都是有序的,
//直接放到a中就行
else if(j>r)
else if(aux[i-l]<=aux[j-l])
else
void guibingpaixubu(int a,int n)
}}int main();
for(int i=0;i<10;i++)
cout/自上而下的遞迴方法
guibingpaixu(a,0,10-1);
////guibingpaixubu(a,10);
for(int i=0;i<10;i++)
cout
}
資料結構排序 歸併排序
歸併排序是建立在歸併操作上的一種有效的排序演算法,時間複雜度是o nlogn 它過程為 比較a i 和a j 的大小,若a i a j 則將第乙個有序表中的元素a i 複製到r k 中,並令i和k分別加上1 否則將第二個有序表中的元素a j 複製到r k 中,並令j和k分別加上1,如此迴圈下去,直到...
資料結構 歸併排序
排序 sort 或分類 內部排序方法可以分為五類 插入排序 選擇排序 交換排序 歸併排序和分配排序。歸併排序 include using namespace std 歸併排序中的合併演算法 void merge int a,int left,int center,int len int t int ...
資料結構 歸併排序
歸併排序,即merge sort,通過遞迴式的merge操作 merge即歸併 實現排序。演算法思想是分治思想 divide and conquer 歸併排序一般是遞迴實現的 時間複雜度o nlgn 遞迴都是一去一回,去的時候divide,回的時候conquer。表達欠提煉 1 divide,分 遞...