1. 程式人生 > >算法系列<歸並排序>

算法系列<歸並排序>

case nlogn merge pre param col sta [] 系列

歸並兩個已排序的數組序列,歸並之後的數組序列還是有序的

用java實現如下:

    /**
     * 歸並排序:歸並兩個已排序(升序)的數組,歸並之後是已排序的
     * 最好時間復雜度:O(N),最壞時間復雜度:O(NlogN),平均時間復雜度:O(NlogN),空間復雜度:O(N)
     * 測試case:
     * {},{}
     * {},{1,2,3}
     * {1,2,3},{}
     * {1,2,3},{4,5,6}
     * {4,5,6},{1,2,3}
     * {12,34,45},{3,8,96}
     * @param table1 已升序排序的數組1
     * 
@param table2 已升序排序的數組2 * @return */ public static int[] mergeSort(int[] table1,int[] table2){ if(table1.length>0||table2.length>0) { int[] table = new int[table1.length + table2.length]; for (int index = 0, i = 0, j = 0; index < table.length; index++) {
if (i >= table1.length) { table[index++] = table2[j++]; } else if (j >= table2.length) { table[index++] = table1[i++]; } else if (table1[i] < table2[j]) { table[index] = table1[i]; i
++; } else { table[index] = table2[j]; j++; } } return table; }else{ return null; } }

算法系列<歸並排序>