• 排序算法之------归并排序


    归并算法: 要将一个数组排序,可以先(递归地)将它分成两半分别排序,然后将结果归并起来。

    时间复杂度为 O(NlogN) ,空间复杂度为 O(n)

     1 public class Merge {
     2 
     3     private static int[] copy; 
     4 
     5     public static void sort(int[] array){
     6         copy = new int[array.length];
     7         sort(array, 0, array.length -1);
     8     }
     9 
    10     private static void sort(int[] array, int start, int end) {
    11         //将数组排序
    12         if(end <= start) return;
    13         int mid = start + (end - start) /2;
    14         sort(array, start, mid); //将左边数组排序
    15         sort(array, mid + 1, end);//将右边的数组排序
    16         merge(array, start, mid, end);//归并方法
    17     }
    18 
    19     /**
    20      * 排序
    21      * @param array 需要排序的数组
    22      * @param start 数组的起始位置
    23      * @param mid 数组的中间位置
    24      * @param end 数组的结束位置
    25      */
    26     private static void merge(int[] array, int start, int mid, int end) {
    27         int i = start, j = mid+1;
    28         for(int k = start; k <= end; k++){ //复制数组
    29             copy[k] = array[k];
    30         }
    31 
    32         for(int k = start; k <= end; k++){
    33             if(i > mid) array[k] = copy[j++]; //当只剩下右边数组
    34             else if (j > end) array[k] = copy[i++]; //当只剩下左边数组
    35             else if (copy[i] <= copy[j]) array[k] = copy[i++]; 
    36             else array[k] = copy[j++];
    37         }
    38     }
    39 }

    测试代码:

     1 public class MergeTest {
     2 
     3     public static void main(String args[]){
     4         int[] array = new int[] {9,5,3,4,89,14,24,56,3,78,45};
     5         Merge.sort(array);
     6         for(int i : array){
     7             System.out.print(i + " ");
     8         }
     9     }
    10 }

     

     

  • 相关阅读:
    JVM的学习5_____垃圾回收:分代收集算法
    JVM的学习4____GC的作用和垃圾的标记
    JVM的学习3_____逃逸分析与栈上分配
    JVM的学习2____对象实例的内存分配原理
    JVM的学习1_____内存模型
    SpringMVC的学习____6.JSON 和Ajax
    两种方法关联控制器和DOM
    img的src,a的href使用{{}}设置属性不能生效
    ng之{{value}}顺序
    ng之ng-app指令
  • 原文地址:https://www.cnblogs.com/huangyichun/p/6086862.html
Copyright © 2020-2023  润新知