• 归并排序


    关于递归思想,可参考我的递归基础文章:https://www.cnblogs.com/wangymd/p/16440003.html

    常建排序算法:https://www.cnblogs.com/wangymd/p/16420833.html 延续。

    关于归并,就是分而治之的思想。理论知识了解,实操能力不行。

    1、递归排序

     1 package com.wangymd.sort;
     2 
     3 /**
     4  * @desc 归并排序
     5  * @author wangymd
     6  * @data 2022-07-03 16:26:14
     7  */
     8 public class MergeSortTest extends BaseSort{
     9 
    10     public static void main(String[] args) {
    11         int[] arr = {5, 9, 3, 1, 2, 8, 4, 7, 6};
    12         printNums("归并排序前", arr);
    13         MergeSortTest mergeSort = new MergeSortTest();
    14         mergeSort.mergeSort(arr, 0, arr.length - 1);
    15         printNums("归并排序后", arr);
    16     }
    17 
    18     /**
    19      * 递归分解
    20      * @param arr
    21      * @param left
    22      * @param right
    23      */
    24     public void mergeSort(int[] arr, int left, int right) {
    25         System.out.println("归并排序中left:" + left + ",right:" + right);
    26         if (left == right) {
    27             return;
    28         }
    29         int mid = (left + right) / 2;
    30         mergeSort(arr, left, mid);
    31         mergeSort(arr, mid + 1, right);
    32         merge(arr, left, mid, right);
    33     }
    34 
    35     /**
    36      * 合并
    37      * @param arr
    38      * @param left
    39      * @param mid
    40      * @param right
    41      */
    42     private void merge(int[] arr, int left, int mid, int right) {
    43         int[] tempArr = new int[right - left + 1]; 
    44         for (int i = left; i <= right; i++) {
    45             tempArr[i - left] = arr[i];
    46         }
    47         //排序
    48         SelectSort sortTest = new SelectSort();
    49         tempArr = sortTest.sort1(tempArr);
    50         
    51         //赋值
    52         for (int i = 0; i < tempArr.length; i++) {
    53             arr[left + i] = tempArr[i];
    54         }
    55         printNums("归并排序过程结果", arr);
    56     }
    57 }
  • 相关阅读:
    rbd-mirror新功能
    ceph查询rbd的使用容量(快速)
    Ceph Bluestore首测
    让磁盘硬盘灯常闪定位盘
    aa
    地理围栏
    Can't connect to MySQL server on localhost (10061)解决方法
    经典智力题
    MEF程序设计指南
    ESRI.ArcGIS.AnalysisTools.Erase 结果是空?
  • 原文地址:https://www.cnblogs.com/wangymd/p/16440329.html
Copyright © 2020-2023  润新知