如下代码:
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
分享到:
相关推荐
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"...
定义:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子...
归并排序
本文实例为大家分享了C语言实现归并排序的具体代码,供大家参考,具体内容如下 归并排序的基本思想: 将两个及其以上的有序表合并为一张有序表,把待排序序列通过分治法分为若干个有序子序列,然后每两个子序列合并...
实现归并排序的一个类
根据算法导论实现的归并排序算法
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段...
内部排序之归并排序的代码实现,代码风格简单 易于看懂
C/C++语言实现归并排序算法,递归调用,算法设计与分析。