資料結構 排序2 歸併排序

2021-08-19 16:40:01 字數 1338 閱讀 5198

這是一種自上而下先將一組陣列拆分為兩組,不斷的往下拆分,當每組只剩下乙個的時候遞迴結束

然後在開闢乙個新的陣列 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,分 遞...