java实现归并排序算法

今天药忘吃喽~ 2022-05-09 00:28 356阅读 0赞

前面我们讲了归并排序算法,接下来我们来用java代码实现呗,如下

  1. package ttt;
  2. import java.util.Arrays;
  3. public class MergeSort {
  4. public static int[] lastMergeSort(int[] list1,int[] list2) {
  5. int i = 0, j = 0, k = 0;
  6. int [] temp = new int[list1.length + list2.length];
  7. while (i < list1.length && j < list2.length) {
  8. if (list1[i] <= list2[j]) {
  9. temp[k++] = list1[i++];
  10. }else {
  11. temp[k++] = list2[j++];
  12. }
  13. }
  14. if (i == list1.length) {
  15. while(j <list2.length) {
  16. temp[k++] = list2[j++];
  17. }
  18. }
  19. if (j == list2.length) {
  20. for(;i <list1.length;)
  21. temp[k++] = list1[i++];
  22. }
  23. return temp;
  24. }
  25. public static int[] mergeSort(int[] theArray) {
  26. if(theArray.length ==1) {
  27. return theArray;
  28. }
  29. int mid = (int)theArray.length/2;
  30. int[] leftArray = mergeSort(Arrays.copyOfRange(theArray, 0, mid));//前闭后开区间,这种写法开闭了很多空间,有点浪费,实则可以通过别的写法避免的
  31. int[] rightArray = mergeSort(Arrays.copyOfRange(theArray, mid, theArray.length));
  32. return lastMergeSort(leftArray, rightArray);
  33. }
  34. public static void main(String[] args) {
  35. int []theArray = {10,1,18,30,23,12,7,5,18,17};
  36. System.out.print("之前的排序:");
  37. for(int i = 0; i < theArray.length; i++) {
  38. System.out.print(theArray[i] + " ");
  39. }
  40. int [] larray = {1,4,10};
  41. int [] rarray = {2,6,8,11,15,18};
  42. // int []result_array = lastMergeSort(larray,rarray);
  43. int []resultArray = mergeSort(theArray);
  44. System.out.print("归并排序:");
  45. for(int v : resultArray) {
  46. System.out.print(v + " ");
  47. }
  48. }
  49. }

运行结果如下

  1. 之前的排序:10 1 18 30 23 12 7 5 18 17 归并排序:1 5 7 10 12 17 18 18 23 30

符合预期

发表评论

表情:
评论列表 (有 0 条评论,356人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JAVA_算法_归并排序

    思想: 把一个大的数组细分成两个不同的数组, 循环这个过程。直到数组中的元素只有1或0个元素。 当数组中的只有两个元素时,比较两个元素的大小,前一个大于后一个就交换。 然

    相关 归并排序算法Java实现

    1、基本思想 归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列

    相关 归并排序算法——java

    什么是归并排序算法? 答:归并排序算法就是利用分治思想将数组分成两个小组A,B,再将A,B小组各自分成两个小组,依次类推,直到分出来的小组只有一个数据时,可以认为这个小组已经

    相关 排序算法归并排序Java实现

    归并排序的思想是将局部有序的数组合并为一个大的有序数组,前提是需要保证局部数组有序,如果局部没有顺序,那么就拆分,再合并,最差的情况是,拆到两个数组都只有一个元素的时候,这时候