如何利用java实现归并排序

互联网 20-3-30

什么是归并排序?

归并排序是利用递归与分治的技术将数据序列划分为越来越小的半子表,再对半子表排序,最后再用递归方法将排好序的半子表合并成越来越大的有序序列。

核心思想

将两个有序的数列合并成一个大的有序的序列。通过递归,层层合并,即为归并。

(推荐教程:java快速入门)

import java.util.Arrays;  /**  * @author god-jiang  * @date 2020/1/13  */ //归并排序,时间复杂度为O(N*logN),空间复杂度为O(N) public class MergeSort {     public static void MergeSort(int[] arr, int start, int end) {         //分治的结束条件         if (start >= end) {             return;         }         //保证不溢出取start和end的中位数         int mid = start + ((end - start) >> 1);         //递归排序并且合并         MergeSort(arr, start, mid);         MergeSort(arr, mid + 1, end);         Merge(arr, start, mid, end);     }      //合并     public static void Merge(int[] arr, int start, int mid, int end) {         int[] temp = new int[end - start + 1];         int p1 = start;         int p2 = mid + 1;         int p = 0;         while (p1 <= mid && p2 <= end) {             if (arr[p1] > arr[p2]) {                 temp[p++] = arr[p2++];             } else {                 temp[p++] = arr[p1++];             }         }         while (p1 <= mid) {             temp[p++] = arr[p1++];         }         while (p2 <= end) {             temp[p++] = arr[p2++];         }         for (int i = 0; i < temp.length; i++) {             arr[i + start] = temp[i];         }     }      public static void main(String[] args) {         int[] a = {2, 4, 6, 1, 3, 7, 9, 8, 5};         MergeSort(a, 0, a.length - 1);         System.out.println(Arrays.toString(a));     } }

运行结果:

相关视频教程推荐:java视频教程

以上就是如何利用java实现归并排序的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 归并排序
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:vue2.0子组件中怎么改变父组件中的值 ?

相关资讯