#include #include#include
#include /**
分治法排序:
1、分解。2、解決。3、合併。**/
void merge(int* a,int p,int q,int
r)else
}}void divide(int* a,int
length)
}int
main()
;
int length = sizeof(a)/sizeof(int
);
for(int i = 0; i < length; i++)
printf(
"%d
",a[i]);
printf("\n
");divide(a,length);
for(int i = 0; i < length; i++)
printf(
"%d
",a[i]);
printf("\n
");return0;
}
歸併排序想法很簡單,類似於分治法,先將乙個長長的序列分成若干子串行,然後合併,其核心就在於合併過程。演算法導論中這樣描述:想象一下桌子上放好了兩副排好順序的撲克,然後要把這兩副撲克合併成一幅排好順序的撲克,那麼就分別從兩副撲克的最上邊取最小的然後組成乙個新的序列。取完之後即完成了排序。歸併排序就是利用這個思想。
注意點:1、陣列模仿時,注意當陣列元素移動時,移動標誌位。
經典排序之歸併排序
package 歸併排序 歸併排序的思想 將陣列從中間分開,然後利用遞迴的方法將左右子串行均拆開 再借助乙個陣列歸併左右序列,排序是在歸併時進行的,最後將資料複製到原始陣列中 public class mergesort public static void main string args ret...
經典排序之歸併排序
歸併排序,其的基本思路就是將陣列分成二組a,b,如果這二組組內的資料都是有序的,那麼就可以很方便的將這二組資料進行排序。如何讓這二組組內資料有序了?可以將a,b組各自再分成二組。依次類推,當分出來的小組只有乙個資料時,可以認為這個小組組內已經達到了有序,然後再合併相鄰的二個小組就可以了。這樣通過先遞...
經典排序 歸併排序
歸併排序是利用歸併的思想實現的排序方法,該方法採用經典的分治策略 分治法將問題分成一些小的問題然後遞迴求解,而治的階段則是將分的階段得到的答案修補在一起,即分而治之 下面我們以待排序陣列 8,4,5,7,1,3,6,2,9,10為例,以 的方式講解歸併排序的原理。從圖中可以看出,歸併排序是先將陣列進...