package ge.retain.util;
import java.util.Arrays;
public class SortUtils {
public static void main(String args[]){
int[] array = {1,3,2,4,5,7,6,9,8,10,12,11}; //12 个元素 下标0-11
int temp[] = new int[array.length]; //创建临时数组
MergeSort(array,0,array.length-1,temp);
}
public static void MergeSort(int array[],int start,int end,int[] temp){
if(start < end){
int mid = (start+end)/2; //mid 5
MergeSort(array,start,mid,temp); //0-5
MergeSort(array,mid+1, end,temp);//6-11
mergearray(array,start,mid,end,temp);
System.out.println(Arrays.toString(array));
}
}
public static void mergearray(int a[], int first, int mid, int last, int temp[])
{
int i = first, j = mid + 1;
int m = mid, n = last;
int k = 0;
while (i <= m && j <= n)
{
if (a[i] <= a[j]) //依次比较前半部分和后半部分的元素 如果前半部分的元素值比后半部分小,就把该值放到临时数组中 //
temp[k++] = a[i++]; //同时 前半部分 下标后移一位 临时数组下标后移一位
else
temp[k++] = a[j++]; //反之 后半部分下标后移一位 临时数组下标后移一位
}
while (i <= m) //依次把前半部分剩余值放入临时数组
temp[k++] = a[i++];
while (j <= n) //依次把前后部分剩余值放入临时数组
temp[k++] = a[j++];
for (i = 0; i < k; i++) //把临时数组依次复制到原始数组
a[first + i] = temp[i];
}
}
分享到:
相关推荐
JAVA归并排序算法.pdf
JAVA归并排序
java 实现归并排序,有代码实现,复杂度分析,基本步骤,适合初学者吧,
这是关于归并排序的demo,里面有递归版和非递归版的实现
java代码-java 归并排序(偶数 子数组已排序)
主要介绍了Java 归并排序算法、堆排序算法实例详解,需要的朋友可以参考下
实现归并排序的一个类
归并排序的链表实现 随机生成实验数据,可以统计算法运行时间
使用Java实现简单的归并排序算法,给大家提供一个参考。
NULL 博文链接:https://128kj.iteye.com/blog/1663631
java归并外排序
归并排序 在排序前,先建好一个长度等于原数组长度的临时数组
利用分治法思想实现归并排序,Java语言描述。
主要介绍了java 归并排序的实例详解的相关资料,需要的朋友可以参考下
该资源提供了一份全面的指南,介绍了如何在Java中实现归并排序。文档中涵盖了归并排序的基本概念,包括如何对数组进行排序以及如何在Java中实现归并排序。此外,文档还包括一个逐步指南,介绍如何在Java中实现归并...
主要简单介绍了java 归并排序算法的工作原理及代码,需要的朋友可以参考下
一年前做的排序动画,归并排序动画一直未完成,今天完成了,与大家共享
java快速排序 归并排序 冒泡排序 选择排序
Java归并排序-附件资源