package com.shusheng.mergesort;
/** * 歸併排序(作圖分析)
*@author administrator
* */
public
class
mergesort
//將between+1到last的元素拷貝到rarray陣列
for (j = 0,temp = between+1;temp<=last;)
//當i和j都沒有移動到盡頭時,對兩個陣列的第i個元素和第j個元素比較
for(i=0,j=0;i//i和j表示larray移動的下標和rarray陣列移動的下標
if(larray[i]<=rarray[j])else
}while(i//當上面的迴圈有乙個已經移動到盡頭(j已經移動到盡頭),就將larray的剩下的值賦值給array,因為larray已經是有序的
array[first++] = larray[i++];
}while(j//當上面的迴圈有乙個已經移動到盡頭(i已經移動到盡頭),就將rarray的剩下的值賦值給array,因為rarray已經是有序的
array[first++] = rarray[j++];}}
/*** 歸併排序的公開函式,
*@param array 原始陣列
*@param first 表示待排區間的第乙個下標
*@param last表示待排區間的最後乙個下標
*/public
static
void
mergesortmethod(int array,int first,int last)
/*** 測試方法
*@param args
*/public
static
void
main(string args) ;
mergesortmethod(args1,0,args1.length-1);
for (int i = 0; i < args1.length; i++)
}}
歸併排序 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...