Java實現歸併排序

2021-07-03 01:28:49 字數 625 閱讀 3697

思想就是:將陣列分成兩個陣列,如果兩個陣列的元素都是有序的,那麼就可以很方便的將這兩組資料歸併。如果沒有序繼續將兩組陣列分組,以此類推,當組內只有乙個資料時,認為這個小組內已經有序,然後合併相鄰兩個小組就可以。

package sort;

//歸併排序

//2015-05-31

public

class mergesort

else

}public

void

mergearray(int a,int first,int mid,int last,int temp)

}while(i<=m)

while(j<=n)

for(i=0;i這裡遇到的問題有兩個

case1:遞迴導致記憶體溢位

if(first==last)

else {int mid=(first+last)/2;

//遞迴

當時沒有對first和last進行比較,結果導致記憶體溢位

case2: 陣列初始化是沒有給定

int temp = new

int[a.length ] ;

該過即可正常編譯通過

歸併排序 Java實現

歸併排序 mergesort 1 思想 多次將兩個或兩個以上的有序表合併成乙個新的有序表。2 演算法時間複雜度 最好的情況下 一趟歸併需要n次,總共需要logn次,因此為o n logn 最壞的情況下,接近於平均情況下,為o n logn 說明 對長度為n的檔案,需進行logn 趟二路歸併,每趟歸併...

Java實現歸併排序

剛開始接觸歸併排序的時候,感覺挺困難的,但是仔細的分析之後,就會發現它的原理還是蠻簡單的 就是借助另外的乙個陣列空間將左右兩側 從中間mid處劃分 已經排序好的原陣列轉到新的陣列空間。如下圖所示 轉移操作時,就是左右所指的資料進行比較,將較小的資料 由小到大排序 儲存到新的陣列空間。如下圖所示 了解...

java實現歸併排序

1 歸併演算法 思想 假設初始序列含有n個記錄,進行兩兩歸併,得到長度為不小於n 2的最大整數個兩個一組或者乙個一組的有序序列 然後再進行二二歸併,知道完全有序。public static void mergingsort short arr,int low,int high 實現歸併演算法 pub...