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]); } } }
排序 - 归并排序
猜你喜欢
转载自blog.51cto.com/tianyiya/2285566
今日推荐
周排行