`

java-归并排序

 
阅读更多
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实现归并排序

    Java实现归并排序 Java 实现归并排序是一种常用的排序算法,通过分治策略将原始数组分成小组,然后对每个小组进行排序,最后将排序好的小组合并成一个有序数组。下面是 Java 实现归并排序的知识点总结: 基本思想 ...

    详解Java常用排序算法-归并排序

    Java常用排序算法-归并排序 归并排序是一种分治思想的排序算法,其基本思想是将待排序的数组分成若干个子序列,每个子序列都是有序的,然后再将子序列合并成一个有序的数组。这种算法的时间复杂度为O(n log n),...

    如何使用Java实现归并排序算法,程序详细解读

    归并排序:如何使用Java实现归并排序算法,程序详细解读; 归并排序:如何使用Java实现归并排序算法,程序详细解读; 归并排序:如何使用Java实现归并排序算法,程序详细解读; 归并排序:如何使用Java实现归并排序...

    算法-理论基础- 排序- 归并排序(包含源程序).rar

    2. 归并排序的源代码实现,可能是C++、Java、Python或其他编程语言。 3. 对归并排序算法的性能分析,包括时间复杂度和空间复杂度的讨论。 4. 实际应用示例,展示如何在实际编程中使用归并排序。 5. 归并排序与其他...

    [Java算法-排序]归并排序.java

    该资源提供了一份全面的指南,介绍了如何在Java中实现归并排序。文档中涵盖了归并排序的基本概念,包括如何对数组进行排序以及如何在Java中实现归并排序。此外,文档还包括一个逐步指南,介绍如何在Java中实现归并...

    归并排序Java_归并排序_

    在Java中实现归并排序,我们可以创建一个名为`MergeSort`的类来封装整个过程。归并排序的基本思想是将待排序的序列分成两个或更多的子序列,对每个子序列分别进行排序,然后将排序后的子序列合并成一个有序序列。这...

    算法-归并排序(java)(csdn)————程序.pdf

    归并排序算法-java 实现 在计算机科学中,排序算法是指将一组无序的数据按照某种规则排列成有序的数据。归并排序(Merge Sort)是一种常用的排序算法,属于分治算法的范畴。下面将详细介绍归并排序算法的java实现。...

    Java实现归并排序

    在Java中实现归并排序,主要涉及到以下几个关键步骤: 1. **分割(Divide)**:将原始数组分为两个相等(或接近相等)的子数组。这通常通过取数组中间索引来完成。例如,如果数组长度为`n`,则可以将前`n/2`个元素...

    JavaSwing归并排序动画源码(含其他排序)

    在这个场景中,我们讨论的焦点是使用 Java Swing 来实现一个排序算法的动画展示,特别是归并排序。归并排序是一种高效的、稳定的排序算法,它的基本思想是将大问题分解为小问题来解决,通过递归地将两个或更多有序数...

    Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法

    Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...

    Java实现归并排序.rar

    在Java中实现归并排序,我们可以遵循以下步骤: **一、理解归并排序原理** 归并排序是将大问题分解成小问题来解决。它将待排序的序列分成两个子序列,分别对这两个子序列进行排序,然后将排好序的子序列合并成一个...

    java归并外排序

    Java归并外排序是一种在处理大量数据时,利用外部存储器进行排序的算法。当内存不足以容纳所有数据时,就需要借助硬盘等外部存储设备。这种排序算法通常由三个主要步骤组成:分块、内部排序和合并。 1. 分块:首先...

    Java ArrayList实现的快排,归并排序,堆排序

    本篇将重点讲解如何利用ArrayList实现快速排序(Quick Sort)、归并排序(Merge Sort)和堆排序(Heap Sort)这三种经典的排序算法,并探讨它们的原理、优缺点以及在实际应用中的选择。 **快速排序(Quick Sort)**...

    java实现归并排序代码

    归并排序 java实现归并排序

    java算法——归并排序

    归并排序 在排序前,先建好一个长度等于原数组长度的临时数组

    归并排序(JAVA)

    在Java中实现归并排序,我们可以将一个大数组分成两个小数组,分别对它们进行排序,然后将排序后的子数组合并成一个有序的大数组。这个过程会递归地进行,直到每个子数组只包含一个元素,因为单个元素天生就是有序的...

    java代码-归并排序-Java

    在Java中实现归并排序,我们可以分为以下几个关键步骤来理解: 1. **分治策略**:归并排序的核心是将大问题分解为小问题解决。它将一个数组分为两个子数组,分别对这两个子数组进行排序,然后将排好序的子数组合并...

    java代码-归并排序-----

    在Java中实现归并排序,通常涉及以下几个关键步骤: 1. **分割**: - 归并排序首先将数组分为两半,直到每个子数组只有一个元素。这可以通过递归实现,每次都将数组的起始位置和结束位置作为参数,然后计算中间...

    算法设计实验报告-快速排序和归并排序

    在本次实验中,我们编写了一个Java程序,生成一定数量的随机整数,然后使用快速排序和归并排序对这些整数进行排序,并记录各自的执行时间。实验结果可能受到数据分布、硬件环境等因素的影响,因此需要多次运行以获取...

Global site tag (gtag.js) - Google Analytics