java对大文件的分割、排序、合并(多路归并+败者树)

您所在的位置:网站首页 两个文件如何快速对比排序呢视频 java对大文件的分割、排序、合并(多路归并+败者树)

java对大文件的分割、排序、合并(多路归并+败者树)

2024-07-11 09:56| 来源: 网络整理| 查看: 265

如何对一个超大文件进行排序,内存不够

我们这里使用三步骤:分割(首先将大文件分割成内存够的小文件)、排序(对每个小文件进行排序,我这里是写入的时候就排好序了)、合并(利用多路归并+败者树实现)

1.分割+排序 * * 将大文件分割成小文件 * 排序好之后写入小文件 * * */ public class Test2Main { public static void main(String[] args) { long start = System.currentTimeMillis(); StringBuilder builder = new StringBuilder(1024 * 1024 * 8); int a = 0; //这里每个文件存多少数据根据自己实际情况而定,我这里的数据是1024*1024*128,我一共分为了16个小文件. int[] arr = new int[1024 * 1024 * 8]; try { BufferedReader br = new BufferedReader (new FileReader("syudy\\src\\L2_end\\file2\\jm.txt")); String len; int i = 0; while ((len=br.readLine())!=null){ //每次只存你定好的数据量进数组 arr[a++] = Integer.parseInt(len); //由于我把文件分为十六个,所以if语句中只进去十六次,刚好由i来生成十六个小文件 if (a == 1024 * 1024 * 8) { //调用快速排序的方法对每个小文件排序 int[] k = KuaiSu.kuaisu(arr, 0, arr.length - 1); i++; for (int i1 = 0; i1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3