归并排序代码如下:
public class MergeSort
{
public static void main(String[] args)//测试方法
{
int[] array = new int[]{23,456,78,65,79,24,36,82,76,94,46,82};
mergeSort(array, 0, array.length -1);
for(int i = 0; i < array.length; i ++)
{
System.out.print(array[i] + " ");
}
}
public static void mergeSort(int[] data, int a, int b)//递归归并排序,分散 a:开始排序指针,b:结束排序指针
{
if(a >= b)
{
return;
}
int mid = (a + b) / 2;
mergeSort(data, a, mid);
mergeSort(data, mid + 1, b);
merge(data, a, mid, b);
}
public static void merge(int[] data, int low, int mid, int high) //合并
{
int[] temp = new int[high - low + 1]; //临时存储排序结果
int ai = low;
int bi = mid + 1;
int index = 0;
while(ai <= mid && bi <= high)
{
if(data[ai] < data[bi])
{
temp[index ++] = data[ai ++];
}
else
{
temp[index ++] = data[bi ++];
}
}
while(ai <= mid)
{
temp[index ++] = data[ai ++];
}
while(bi <= high)
{
temp[index ++] = data[bi ++];
}
for(int i = 0; i < temp.length; i ++)
{
data[low + i] = temp[i];
}
}
}