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


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

    时间复杂度为 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 }

     

     

  • 相关阅读:
    软件测试之测试需求
    如何做页面测试
    如何做查询测试
    如何做报表测试
    SQL server(一)变量的定义
    SQLserver中事务的使用
    Asp.Net MVC中使用中间件对要访问的页面进行Session判断
    python之numpy使用(一)
    SQL Server存储过程的简单使用
    SQLServer游标的简单使用
  • 原文地址:https://www.cnblogs.com/huangyichun/p/6086862.html
Copyright © 2020-2023  润新知