归并排序利用分治思想将数组排序。
Java代码:
public static void MergeSort(int[] A, int low, int high) {
if(low<high) {
int mid = low + (high - low) / 2;
MergeSort(A,low,mid); //左侧排序
MergeSort(A,mid+1,high); //右侧排序
Merge(A,low,mid,high); //归并
}
}
public static void Merge(int[] A, int low, int mid, int high) {
int[] B = new int[A.length];
//辅助数组B初始化
for(int i = low; i <= high; i++)
B[i] = A[i];
int i = low, j = mid + 1;
int k = low;
while(i <= mid && j <= high) {
if(B[i]<B[j])
A[k++] = B[i++];
else
A[k++] = B[j++];
}
while(i <= mid)
A[k++] = B[i++];
while(j <= high)
A[k++] = B[j++];
}