import java.util.Objects; /** * 空間複雜度:n * 最好時間複雜度:nlog2n * 最壞時間複雜度:nlog2n * 平均時間複雜度:nlog2n * 穩定性:穩定 */ public class MergeSort { private static int[] merge(int[] array, int left, int right, int mid) { if (Objects.isNull(array) || array.length == 0) { return new int[0]; } int size = right - left + 1; int[] result = new int[size]; int index = 0; int i = left, j = mid + 1; while (i <= mid && j <= right) { if (array[i] <= array[j]) { result[index] = array[i ++]; } else { result[index] = array[j ++]; } ++ index; } while (i <= mid) { result[index ++] = array[i ++]; } while (j <= right) { result[index ++] = array[j ++]; } return result; } private static void sort(int[] array, int left, int right) { if (Objects.isNull(array) || array.length == 0) { return; } if (left < right) { int mid = (left + right) >>> 1; sort(array, left, mid); sort(array, mid + 1, right); int[] result = merge(array, left, right, mid); System.arraycopy(result, 0, array, left, result.length); } } public static void main(String[] args) { int[] array = {9, 2, 3, 6, 4, 8, 5, 0, 7, 1}; sort(array, 0, array.length - 1); for (int i = 0;i < array.length; ++ i) { System.out.println(array[i]); } } }
排序 - 歸併排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.