Cracking the coding interview--Q9.4
来源:互联网 发布:python 新浪数据接口 编辑:程序博客网 时间:2024/04/29 04:24
原文:
If you have a 2 GB file with one string per line, which sorting algorithm would you use to sort the file and why?
译文:
如果你有个2GB的文件,其中每一行是一个字符串,你会使用哪种算法来排序,为什么?
当面试官说到2GB文件的时候,他其实就是在暗示你, 他并不希望一次性把所有的数据都载入内存。这样子的话,我们要怎么做呢? 我们每次就将部分数据载入内存就好了。
算法:
首先我们要了解,可以用的内存有多大?假设我们有X MB的内存可用。
- 我们将文件分为K份,其中X*K=2GB。每次取其中一份载入到内存中, 用O(nlog n)的算法排序,然后再保存到外部文件。
- 载入下一份并排序
- 当我们将K份小文件都排好序,合并它们。
上面的算法就是外排序,步骤3又称为N路归并。
使用外排序是由于数据太大了,无法一次全部加载到内存中,所以需要借助磁盘进行存储, 每次只从磁盘中加载一部分数据进入内存,进行排序。
推荐阅读: 维基百科:外排序
参考:http://hawstein.com/posts/9.4.html
0 0
- Cracking the coding interview--Q9.4
- Cracking the coding interview--Q9.4
- Cracking the coding interview--Q9
- Cracking the coding interview--Q9.7
- Cracking the coding interview--Q9.6
- Cracking the coding interview--Q9.3
- Cracking the coding interview--Q9.1
- Cracking the coding interview--Q9.2
- Cracking the coding interview--Q9.3
- Cracking the coding interview--Q9.5
- Cracking the coding interview--Q9.6
- Cracking the coding interview--Q9.7
- Cracking the coding interview--Q9.1
- Cracking the coding interview--Q9.2
- Cracking the coding interview--Q9.3
- Cracking the coding interview--Q9.5
- Cracking the coding interview--Q9.6
- Cracking the coding interview--Q9.7
- 在VMware中安装ubuntu遇到每次开机都需要重新联网的问题
- untill和till的区别
- struts2学习
- windows7家庭普通版升级旗舰版的方法
- 打开系统设置
- Cracking the coding interview--Q9.4
- LRU Cache的一种实现
- android附近的人的实现
- 第十六周 刷OJ题-输出四个数字字符
- 杀毒软件哪个好?2011年12月(第六次)VB100认证结果出炉
- 电视信号——行场同步
- 用指针玩字符串
- Nginx未启动的解决方法
- 编程 经典书籍介绍