import java.util.Arrays;
public class MergeSort {
public static void main(String[] args) {
int[] a={20,1,3,8,5,9,4,25};
mergeSort(a,0,a.length-1);
System.out.println(Arrays.toString(a));
}
public static void mergeSort(int[] a,int first,int last){
int len=a.length;
if(first>=last)return;
if(first<last){
//int mid=(first+last)/2;
//to avoid overflow,you should do it like this:
int mid=(first&last)+((first^last)>>1);
int[] temp=new int[len];
mergeSort(a,first,mid);
mergeSort(a,mid+1,last);
mergeTwoArray(temp,a,first,mid,last);
}
}
public static void mergeTwoArray(int[] temp,int[] a,int first,int mid,int last){
int i=first;
int j=mid+1;
int k=0;
while(i<=mid&&j<=last){
if(a[i]<a[j]){
temp[k]=a[i];
i++;
}else{
temp[k]=a[j];
j++;
}
k++;
}
while(i<=mid){
temp[k++]=a[i++];
}
while(j<=last){
temp[k++]=a[j++];
}
//System.arraycopy(src, srcPos, dest, destPos, length);
//at first,i write it like this :
//System.arraycopy(temp, 0, a, 0, temp.length);
//I can't get it right until I do it like this:
System.arraycopy(temp, 0, a, first, last-first+1);
//System.arraycopy(temp, 0, a, first, k);//it also works
}
}
分享到:
相关推荐
java代码-使用java解决java排序之-归并排序的问题的源代码 ——学习参考资料:仅用于个人学习使用!
Java实现归并排序 Java 实现归并排序是一种常用的排序算法,通过分治策略将原始数组分成小组,然后对每个小组进行排序,最后将排序好的小组合并成一个有序数组。下面是 Java 实现归并排序的知识点总结: 基本思想 ...
Java常用排序算法-归并排序 归并排序是一种分治思想的排序算法,其基本思想是将待排序的数组分成若干个子序列,每个子序列都是有序的,然后再将子序列合并成一个有序的数组。这种算法的时间复杂度为O(n log n),...
归并排序:如何使用Java实现归并排序算法,程序详细解读; 归并排序:如何使用Java实现归并排序算法,程序详细解读; 归并排序:如何使用Java实现归并排序算法,程序详细解读; 归并排序:如何使用Java实现归并排序...
2. 归并排序的源代码实现,可能是C++、Java、Python或其他编程语言。 3. 对归并排序算法的性能分析,包括时间复杂度和空间复杂度的讨论。 4. 实际应用示例,展示如何在实际编程中使用归并排序。 5. 归并排序与其他...
该资源提供了一份全面的指南,介绍了如何在Java中实现归并排序。文档中涵盖了归并排序的基本概念,包括如何对数组进行排序以及如何在Java中实现归并排序。此外,文档还包括一个逐步指南,介绍如何在Java中实现归并...
在Java中实现归并排序,我们可以创建一个名为`MergeSort`的类来封装整个过程。归并排序的基本思想是将待排序的序列分成两个或更多的子序列,对每个子序列分别进行排序,然后将排序后的子序列合并成一个有序序列。这...
归并排序算法-java 实现 在计算机科学中,排序算法是指将一组无序的数据按照某种规则排列成有序的数据。归并排序(Merge Sort)是一种常用的排序算法,属于分治算法的范畴。下面将详细介绍归并排序算法的java实现。...
在Java中实现归并排序,主要涉及到以下几个关键步骤: 1. **分割(Divide)**:将原始数组分为两个相等(或接近相等)的子数组。这通常通过取数组中间索引来完成。例如,如果数组长度为`n`,则可以将前`n/2`个元素...
在这个场景中,我们讨论的焦点是使用 Java Swing 来实现一个排序算法的动画展示,特别是归并排序。归并排序是一种高效的、稳定的排序算法,它的基本思想是将大问题分解为小问题来解决,通过递归地将两个或更多有序数...
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
在Java中实现归并排序,我们可以遵循以下步骤: **一、理解归并排序原理** 归并排序是将大问题分解成小问题来解决。它将待排序的序列分成两个子序列,分别对这两个子序列进行排序,然后将排好序的子序列合并成一个...
Java归并外排序是一种在处理大量数据时,利用外部存储器进行排序的算法。当内存不足以容纳所有数据时,就需要借助硬盘等外部存储设备。这种排序算法通常由三个主要步骤组成:分块、内部排序和合并。 1. 分块:首先...
本篇将重点讲解如何利用ArrayList实现快速排序(Quick Sort)、归并排序(Merge Sort)和堆排序(Heap Sort)这三种经典的排序算法,并探讨它们的原理、优缺点以及在实际应用中的选择。 **快速排序(Quick Sort)**...
归并排序 java实现归并排序
归并排序 在排序前,先建好一个长度等于原数组长度的临时数组
在Java中实现归并排序,我们可以将一个大数组分成两个小数组,分别对它们进行排序,然后将排序后的子数组合并成一个有序的大数组。这个过程会递归地进行,直到每个子数组只包含一个元素,因为单个元素天生就是有序的...
在Java中实现归并排序,我们可以分为以下几个关键步骤来理解: 1. **分治策略**:归并排序的核心是将大问题分解为小问题解决。它将一个数组分为两个子数组,分别对这两个子数组进行排序,然后将排好序的子数组合并...
在Java中实现归并排序,通常涉及以下几个关键步骤: 1. **分割**: - 归并排序首先将数组分为两半,直到每个子数组只有一个元素。这可以通过递归实现,每次都将数组的起始位置和结束位置作为参数,然后计算中间...
在本次实验中,我们编写了一个Java程序,生成一定数量的随机整数,然后使用快速排序和归并排序对这些整数进行排序,并记录各自的执行时间。实验结果可能受到数据分布、硬件环境等因素的影响,因此需要多次运行以获取...