美文网首页
大文件排序的问题(一)

大文件排序的问题(一)

作者: 秦汉邮侠 | 来源:发表于2020-05-31 09:00 被阅读0次

题目

内存只有1G,有一个10G的文件,里面保存的是UUID(固定48位),需要对UUID排序

快速排序的空间复杂度

被快速排序所使用的空间,依照使用的版本而定。使用原地(in-place)分割的快速排序版本,在任何递归调用前,仅会使用固定的額外空間。然而,如果需要产生log n嵌套递归调用,它需要在他们每一个存储一个固定数量的信息。因为最好的情况最多需要log n次的嵌套递归调用,所以它需要log n的空间。最坏情况下需要O(n次嵌套递归调用,因此需要O(n)的空间。

拆分

  • 如果不考虑快速排序的空间复杂度,每个拆成1G,如果考虑,每个拆成500M,这里没有严格的定量计算
  • 是边拆边排序,还是拆完在排序,建议通过缓冲区边拆边排序
  • 这两点其实都不是本题的重点,下面的合并才是重点

合并

  • 很早之前我们都做个两个有序链表,合并为一个新的有序链表,但是这道题还需要我们合并设置文件的偏移量和缓冲区
  • 1G的空间在不考虑临时空间的条件下,我们分成三个部署,两个250M的待合并文件的缓冲区,一个500M的合并完文件的缓冲区
  • 这两个250M缓冲区的数据合并就和链表的合并是一个意思了,设置两个指针遍历就行
  • 现在从20个500M的文件变成1G的文件和18个500M的文件,按照之前的步骤再次合并就行
  • 是不是需要每次需要从最小的开始,完全没有必要

相关文章

  • 大文件排序的问题(一)

    题目 内存只有1G,有一个10G的文件,里面保存的是UUID(固定48位),需要对UUID排序 快速排序的空间复杂...

  • 外部排序和多路排序

    外部排序: 一、定义问题 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存...

  • JS实现堆排序

    原理 堆排序原理 实现 说明 堆排序对大文件很有效 堆排序是不稳定排序

  • 文本/数据操作

    大文件读取 json 中文编码问题: 排序: url中文转码(python3) csv 文件操作模式 xml lx...

  • 八大排序算法

    排序分类:内部排序、外部排序 外部排序 大文件的排序,即待排序的记录存储在[外存储器]26993)上,待排序的文件...

  • Java 超大文件排序

    思想 超大文件无法一次性全部加载到内存中; 可以将超大文件分片排序,然后遍历分片,输出排序后内容至指定文件; 编码...

  • 开发解决方案 ● 如何单机排序一个大数据文件?

    问题来源: 针对一个大文件,如何对里面的元素进行排序 问题描述: 24GTxt文件,每行1个大整数,1-100位不...

  • 外部排序-归并排序

    1.外部排序定义 指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和...

  • 清理.git文件

    查找.git中的大文件 cd 到工程文件 查找十个大文件并降序排序 命令执行结果如下图: 删除文件 如果删除命令执...

  • 数据结构与算法外部排序

    1.外部排序的基本概念对大文件进行排序,因为文件中的记录很多、信息量庞大,无法将整个文件复制进内存中进行排序需要将...

网友评论

      本文标题:大文件排序的问题(一)

      本文链接:https://www.haomeiwen.com/subject/wgqlzhtx.html