歸併排序 java 實現

2021-09-25 04:49:07 字數 839 閱讀 4073

歸併排序是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。速度僅次於快速排序,為穩定排序演算法,一般用於對總體無序,但是各子項相對有序的數列.

**步驟**

比較array[i]和array[j]的大小,若array[i]≤array[j],則將第乙個有序表中的元素array[i]複製到num[k]中,並令i和k分別加上1;否則將第二個有序表中的元素array[j]複製到num[k]中,並令j和k分別加上1,如此迴圈下去,直到其中乙個有序表取完,然後再將另乙個有序表中剩餘的元素複製到num中。歸併排序的演算法我們通常用遞迴實現,先把待排序區間[low,high]以中點二分,接著把左邊子區間排序,再把右邊子區間排序,最後把左區間和右區間用一次歸併操作合併成有序的區間[low,high]。

public class testdemo2gb;

sortdg(array,0,array.length-1);

for(int tem :array)

}public static void mergsort(int array,int low,int mid,int high)

}while(i<=mid)

while(j<=high)

for(int s=low;s<=high;s++)

}public static void sortdg(int array,int low,int high)

}}

012

3578

9

歸併排序 Java實現

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

Java實現歸併排序

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

Java實現歸併排序

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