歸併排序演算法(Java實現)

2021-08-18 15:09:44 字數 1604 閱讀 6905

求解:遞迴地對兩個子區間a[low…mid] 和 a[mid+1…high]進行歸併排序。遞迴的終結條件是子區間長度為1。

合併:將已排序的兩個子區間a[low…mid]和 a[mid+1…high]歸併為乙個有序的區間a[low…high]。

/**

*@comment 歸併排序演算法

*@author ron

*@date 2023年10月26日 下午2:56:33

*@return

*/public

class

mergesort else

}while (i <= mid)

while (j <= end)

//將temp賦給sources

for (i = 0; i < k; i++)

}/**

*@comment

*@author ron

*@date 2023年10月26日 下午4:28:04

*@param sources 待排序的陣列

*@param gap 子串行長度

*@return

*/static

void mergegroup(int sources,int gap)

if (margedlength + gap - 1

< length)

}/**

*@comment 歸併排序(從上到下)

*@author ron

*@date 2023年10月26日 下午3:42:12

*@return

*/static

void mergesortone(int sources)

//分組合併

for(int gap=1; gap < sources.length; gap *= 2)

}/**

*@comment 二分歸併

*@author ron

*@date 2023年10月26日 下午5:58:42

*@param sources 需要排序的序列

*@param start 序列起始位置

*@param end 序列結束位置

*@return

*/static

void mergedivide(int sources,int start,int end)

int mid = (start+end)/2;

mergedivide(sources,start,mid);

mergedivide(sources,mid+1,end);

merge(sources, start, mid, end);

}public

static

void

main(string args) ;

mergesortone(a);

for (int i=0; i"%d ", a[i]);

}system.out.printf("\n");

int a2 = ;

mergedivide(a2,0,a2.length-1);

for (int i=0; i"%d ", a2[i]);}}

}

排序演算法 歸併排序 java實現

歸併排序指的是將兩個已經排序的序列合併成乙個序列的操作。主要分為兩種,分別是自頂向下的排序方式和自底向上的排序方式。對於自頂向下的排序演算法 採用分治法進行自頂向下的程式設計方式,分治法的核心思想就是分解 求解 合併。1 將長度為n的無序序列平均分割成兩個子串行 2 對這兩個子串行分別進行歸併排序 ...

歸併排序演算法的JAVA實現

package utils.sort 歸併排序,要求待排序的陣列必須實現 comparable 介面 public class mergesort implements sortstrategy bridge new comparable obj.length 初始化中間陣列 mergesort o...

歸併排序演算法的JAVA實現

package utils.sort 歸併排序,要求待排序的陣列必須實現 comparable 介面 public class mergesort implements sortstrategy bridge new comparable obj.length 初始化中間陣列 mergesort o...