如下代码:
public class MergeSort
{
private static int[] array = new int[]{23, 6, 18, 20, 45, 31, 79, 3, 64, 82, 99, 1};
public static void main(String[] args)
{
Display(array, "Befor sort: ");
Start(array, 0, array.length-1);
Display(array, "After sort: ");
}
public static void Start(int[] array, int low, int high)
{
int[] arr = new int[array.length];
recMerge(arr, low, high);
}
public static void recMerge(int[] arr, int low, int high)
{
if(low == high)
return;
else
{
int mid = (low + high)/2;
recMerge(arr, low, mid);
recMerge(arr, mid+1, high);
Merge(arr, low, mid+1, high);
}
}
public static void Merge(int[] arr, int low, int mid, int high)
{
int i = 0;
int lower = low;
int middle = mid - 1;
int n = high - lower + 1;
while(low <= middle && mid <= high)
{
if(array[low] < array[mid])
arr[i++] = array[low++];
else
arr[i++] = array[mid++];
}
while(low <= middle)
arr[i++] = array[low++];
while(mid <= high)
arr[i++] = array[mid++];
for(int j=0; j<n; j++)
array[lower + j] = arr[j];
}
public static void Display(int[] array, String str)
{
System.out.println(str);
for(int i=0; i<array.length; i++)
System.out.print(array[i] + " ");
System.out.println();
}
}
结果如下:
Befor sort:
23 6 18 20 45 31 79 3 64 82 99 1
After sort:
1 3 6 18 20 23 31 45 64 79 82 99