算法系列<歸並排序>
阿新 • • 發佈:2018-10-11
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; } }
算法系列<歸並排序>