归并排序算法基本思想:
将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
Java源代码如下:
public class MergeSort {
private static void mSort(int[] arr, int[] temp, int m, int n) {
if (m == n) return;
int mid = (m+n)/2;
mSort(arr, temp, m, mid);
mSort(arr, temp, mid+1, n);
for (int i = m; i <= n; i++) {
temp[i] = arr[i];
}
int index1 = m;
int index2 = mid + 1;
int index = m;
while (index1 <= mid && index2 <= n) {
if (temp[index1] < temp[index2]) {
arr[index++] = temp[index1++];
} else {
arr[index++] = temp[index2++];
}
}
while(index1 <= mid) {
arr[index++] = temp[index1++];
}
while(index2 <= n) {
arr[index++] = temp[index2++];
}
}
public static void mergeSort(int arr[]) {
int temp[] = new int[arr.length];
mSort(arr,temp,0,arr.length-1);
}
public static void main(String[] args) {
int[] data = new int[]{4,3,2,5,3,6,4,2};
mergeSort(data);
for(int i = 0; i < data.length; i ++) {
System.out.println(data[i]);
}
}
}
分享到:
相关推荐
mergeSort 方法实现了归并排序算法。它使用递归的方式将数组不断划分为更小的子数组,直到每个子数组只有一个元素,然后再依次将这些子数组进行合并,从而实现排序。 merge 方法用于合并两个有序子数组。它借助两个...
使用Java实现简单的归并排序算法,给大家提供一个参考。
此为一个利用Java语言编写的排序分析程序,程序中统计了各种排序算法(冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序、归并排序、基数排序)的分析,ppt中包含各种排序算法的分析,附上动画演示(来自...
该资源提供了一份全面的指南,介绍了如何在Java中实现归并排序。文档中涵盖了归并排序的基本概念,包括如何对数组进行排序以及如何在Java中实现归并排序。此外,文档还包括一个逐步指南,介绍如何在Java中实现归并...
一个算法设计与分析的实验报告,比较归并排序与快速排序的时间差异,这里采用在一个java程序中对随机生成的任意个数分别进行两种方法的排序并记录各自的时间,最后得出结论。 本实验报告附代码以及详细解释
JAVA归并排序算法.pdf
归并排序 在排序前,先建好一个长度等于原数组长度的临时数组
归并排序是一种高效的排序算法,通过将数组逐步分割和合并来实现排序。本教程将深入介绍归并排序的原理,并提供Java示例代码,帮助您理解如何实现这一算法。无论您的编程水平如何,本教程都将为您提供归并排序的全面...
归并排序的链表实现 随机生成实验数据,可以统计算法运行时间
自己编写的基于java的快速排序和归并算法
主要介绍了java 中归并排序算法详解的相关资料,归并排序算法又称为合并排序算法,是一种时间复杂度为O(N logN)的排序算法,因而其在平常生活工作中应用非常广泛,需要的朋友可以参考下
使用Java实现各种排序算法,有插入排序、归并排序、选择排序等等。
主要介绍了Java 归并排序算法、堆排序算法实例详解,需要的朋友可以参考下
给初学者学习算法用,用java实现的排序算法,包括二路归并和插入排序。
详解Java常用排序算法-归并排序
外排序--基于败者树的多路归并排序算法的java实现
实现了四类排序算法,插入排序、交换排序、选择排序、归并排序,详情请看文档,其中 树形选择排序算法--选择排序、 堆排序--选择排序 这两种算法还没实现,有兴趣的自行解决