归并的思想就是分治.时间复杂度..忘记了
大概实现了下..还真挺费劲的...
很受打击啊...还有什么好的排序算法..大家给推荐下我试着弄弄
没怎么写注释..以此作为我的备用.
这几天的思考中我终于发现..理解和会用和精通是两个概念..
学海无涯.人生苦短啊
public class Test1 {
public static void main(String[] args) {
int[] arr1 = { 4,23,234,3,41,311,3,5 ,56,5,46};
int[] arr2 = { 4,23,234,3,41,311,3,5 ,56,5,46};
Test1 test1 = new Test1();
test1.splitAndMerger(arr1, 0, arr1.length-1);
test1.printArray(arr1);
test1.printArray(arr2) ;
Arrays.sort(arr2) ;
test1.printArray(arr2) ;
}
public void splitAndMerger(int[] ints, int begin, int end) {
int mid = (begin + end) / 2;
if (end > begin) {
splitAndMerger(ints, begin, mid);
splitAndMerger(ints, mid + 1, end);
merger(ints, begin, mid, end);
}
}
public void merger(int[] ints, int begin, int mid, int end) {
int temp1 = 0;
int temp2 = 0;
int[] arr1 = Arrays.copyOfRange(ints, begin, mid+1);
int[] arr2 = Arrays.copyOfRange(ints, mid+1, end+1);
for (int i = begin; i <= end; i++) {
if (temp1 == arr1.length && temp2 == arr2.length) {
break;
}
if (temp1 == arr1.length) {
ints[i] = arr2[temp2];
temp2++;
continue;
}
if (temp2 == arr2.length) {
ints[i] = arr1[temp1];
temp1++;
continue;
}
if (arr1[temp1] > arr2[temp2]) {
ints[i] = arr2[temp2];
temp2++;
} else {
ints[i] = arr1[temp1];
temp1++;
}
}
}
public void printArray(int[] array) {
this.printArray(array, 0, array.length-1);
}
public void printArray(int[] array, int begin, int end) {
for (int i = begin; i <= end; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
}
}
分享到:
相关推荐
详解Java常用排序算法-归并排序
java代码-使用java解决java排序之-归并排序的问题的源代码 ——学习参考资料:仅用于个人学习使用!
算法-归并排序(java)(csdn)————程序
该资源提供了一份全面的指南,介绍了如何在Java中实现归并排序。文档中涵盖了归并排序的基本概念,包括如何对数组进行排序以及如何在Java中实现归并排序。此外,文档还包括一个逐步指南,介绍如何在Java中实现归并...
归并排序 在排序前,先建好一个长度等于原数组长度的临时数组
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
该文档涵盖了数组排序的基本概念,包括如何实现各种排序算法,如冒泡排序、选择排序、插入排序、归并排序和快速排序。此外,文档还为每个排序算法提供了详细的代码示例和实现细节。 该文档还涵盖了高级主题,如如何...
java 基本算法之归并排序实例代码.docx
算法实验(java快速排序。归并排序,分治算法,回溯算法,n后问题)
包括所有算法分析设计的实验(java快速排序。归并排序,分治算法,回溯算法,n后问题)
使用Java实现简单的归并排序算法,给大家提供一个参考。
一个算法设计与分析的实验报告,比较归并排序与快速排序的时间差异,这里采用在一个java程序中对随机生成的任意个数分别进行两种方法的排序并记录各自的时间,最后得出结论。 本实验报告附代码以及详细解释
一个Java小程序,利用递归思想实现的归并排序算法。其中有两个类,排序数据是写死在main方法中的。
自动生成500个随机数,然后对这500个随机数进行归并排序
自己编写的基于java的快速排序和归并算法
主要介绍了Java排序算法总结之归并排序,较为详细的分析了归并排序的原理与java实现技巧,需要的朋友可以参考下
java实现的常用的几种基本排序算法,插入、交换、选择、归并
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
JAVA排序算法: 直接插入,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,包括算法的详细介绍,以及对几种算法的详细测试
快速排序、归并排序、希尔排序、冒泡排序、选择排序、插入排序等8中排序方式原理分析java实现