java将文件排序_用Java进行大型文件的排序

这篇博客介绍了一种使用Java进行大文件排序的方法,通过快速排序算法,将大文件分成小块并存储在临时文件中,然后逐步排序并合并到最终结果文件。整个过程涉及到内存与磁盘的交互,以处理超出内存容量的大文件。
摘要由CSDN通过智能技术生成

这正是起源

QuickSort

当时内存中没有足够的RAM来排序,所以它们的过程是将部分结果存储在磁盘中。

所以你可以做的是:

选择一个轴。

按顺序读取文件,并将低于透视的数据存储在temp_file_1中,将大于或等于透视的数据存储在temp_file_2中。

重复temp_file_1中的过程,并将结果附加到result_文件中。

对temp_file_2重复该过程,并将结果附加到result_文件

当零件足够小时(

就像2个直接交换

足以在内存中进行排序)

这样,您就可以成批地进行排序,并将部分结果存储在临时文件中,最后一个文件将对结果进行排序。

编辑

我告诉过你一个快速排序是可能的。

毕竟,您需要一些额外的空间来存放临时文件。

我就是这么做的。

我创建了一个40MB的文件,文件中的数字用逗号分隔。

我给它命名

input

:

输入为40MB

排序过程中,将创建具有“大于”、“小于”值存储桶的tmp文件,排序完成后,这些值将被发送到一个名为(猜测是什么)的文件中。

output

使用部分结果创建临时文件

最后,删除所有tmp文件,结果保存在“输出”文件中,并按正确的编号顺序排序:

最后创建文件“output”,注意它也是40MB

这是完整的程序。

import java.io.*;

import java.util.*;

public class FileQuickSort {

static final int MAX_SIZE = 1024*1024*16; // 16 megabytes in this sample, the mor

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值