zoukankan      html  css  js  c++  java
  • 归并排序简单理解

     1 public static void sort(int[] arr) {
     2         int[] temp = new int[arr.length];// 在排序前,先建好一个长度等于原数组长度的临时数组,避免递归中频繁开辟空间
     3         sort(arr, 0, arr.length - 1, temp);
     4     }
     5 
     6     private static void sort(int[] arr, int left, int right, int[] temp) {
     7         if (left < right) {
     8             int mid = (left + right) / 2;
     9             sort(arr, left, mid, temp);// 左边归并排序,使得左子序列有序
    10             sort(arr, mid + 1, right, temp);// 右边归并排序,使得右子序列有序
    11             merge(arr, left, mid, right, temp);// 将两个有序子数组合并操作
    12         }
    13     }
    14 
    15     private static void merge(int[] arr, int left, int mid, int right, int[] temp) {
    16         int i = left;// 左序列指针left到mid
    17         int j = mid + 1;// 右序列指针mid+1到right
    18         int t = 0;// 临时数组指针
    19         while (i <= mid && j <= right) {//合并
    20             if (arr[i] <= arr[j]) {
    21                 temp[t++] = arr[i++];
    22             } else {
    23                 temp[t++] = arr[j++];
    24             }
    25         }
    26         while (i <= mid) {// 将左边剩余元素填充进temp中
    27             temp[t++] = arr[i++];
    28         }
    29         while (j <= right) {// 将右序列剩余元素填充进temp中
    30             temp[t++] = arr[j++];
    31         }
    32         t = 0;
    33         // 将temp中的元素全部拷贝到原数组中
    34         while (left <= right) {
    35             arr[left++] = temp[t++];
    36         }
    37     }
  • 相关阅读:
    css世界六
    电子书
    es 浏览器支持情况地址
    mac 下载文件的一些地址
    NODE_ENV production / development
    css世界五
    css世界四
    css世界三
    css世界二
    关于递归算法
  • 原文地址:https://www.cnblogs.com/interfaceone/p/7838806.html
Copyright © 2011-2022 走看看