归并排序代码实现
描述: 归并排序 - 外部排序(内存有限制,数据无法一次性放入内存,怎么对数据进行排序) JDK库里面的Java代码,涉及排序都优先采用快排(空间复杂度更好一点) 外部排序的问题(文件的操作): 现在有50亿个整数,内存限制200M,问你该怎么对这 50亿个整数进行排序? 50亿 = 5G * 4 = 20G 步骤一:先生成100个小文件,每个文件保存一部分数据 大文件里面的整数 % 100 = 小文件的下标 一亿个整数的文件, 内存限制4M 100M * 4 = 400M 1G = 10亿 100M = 1亿 package sort; import java.util.Arrays; import java.util.Collections; public class MergeSort { public static void main(String[] args) { int[] arr = new int[20]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random()*100); } mergeSort(arr, 0, arr.length-1); System.out.println(Arrays.toString(arr)); } /** * 实现归并排序 * @param arr *