V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
vimiix
V2EX  ›  Python

只允许使用 10M 的内存,将一个 10G 的文件中的所有元素排序,请大佬说说有什么好的算法

  •  
  •   vimiix ·
    vimiix · 2018-04-24 21:40:39 +08:00 · 6589 次点击
    这是一个创建于 2408 天前的主题,其中的信息可能已经有所发展或是发生改变。
    文件中的数据是"1,2,3,4,5,6...." 这样逗号形式分割存放的数字。
    27 条回复    2018-07-12 11:32:08 +08:00
    kangkang
        1
    kangkang  
       2018-04-24 21:50:27 +08:00   ❤️ 3
    请自行完成课后作业!抖个机灵,楼下回答
    giuem
        2
    giuem  
       2018-04-24 21:51:58 +08:00 via iPhone
    外排序?
    610915518
        3
    610915518  
       2018-04-24 21:53:52 +08:00 via iPhone
    统计每个数字的个数,然后按照顺序打印出来……
    zhengxiaowai
        4
    zhengxiaowai  
       2018-04-24 21:54:09 +08:00
    编程珠玑了解一下
    610915518
        5
    610915518  
       2018-04-24 21:54:37 +08:00 via iPhone
    补充一点:分段读取文件
    choury
        6
    choury  
       2018-04-24 21:55:14 +08:00 via Android
    桶排序
    lany
        7
    lany  
       2018-04-24 22:00:23 +08:00 via Android
    请自行完成课后作业!
    leoli66
        8
    leoli66  
       2018-04-24 22:02:22 +08:00 via iPhone
    如果只给你 1k 内存你怎么排序
    Bryan0Z
        9
    Bryan0Z  
       2018-04-24 22:04:03 +08:00 via Android
    桶排序吧
    vimiix
        10
    vimiix  
    OP
       2018-04-24 22:11:38 +08:00   ❤️ 1
    @giuem 嗯嗯,一看就是大佬,顺着你的答案,我找到了这个 https://www.cnblogs.com/LUO77/p/5838206.html
    vimiix
        11
    vimiix  
    OP
       2018-04-24 22:15:23 +08:00
    @choury
    @Bryan0Z
    桶排序,也是一种好的方法,学习了
    vimiix
        12
    vimiix  
    OP
       2018-04-24 22:17:13 +08:00
    @leoli66 请大佬指点,这个题目我是今天刚遇到,真的被问住了。还是书读的少。
    vimiix
        13
    vimiix  
    OP
       2018-04-24 22:18:19 +08:00
    @kangkang
    @lany
    嗯,课后作业还不少😂
    wellsc
        14
    wellsc  
       2018-04-25 03:21:34 +08:00 via iPhone
    Bitmap 了解一下
    wweir
        15
    wweir  
       2018-04-25 06:12:50 +08:00 via Android
    磁盘排序了解一下
    jorneyr
        16
    jorneyr  
       2018-04-25 08:45:57 +08:00
    文件归并排序
    watzds
        17
    watzds  
       2018-04-25 09:44:39 +08:00 via Android
    了解一下
    daigouspy
        18
    daigouspy  
       2018-04-25 09:58:52 +08:00 via Android
    @leoli66 如果不给你内存怎么排序
    jyf
        19
    jyf  
       2018-04-25 10:45:11 +08:00
    mergesort with bucket lesser than 10M
    winglight2016
        20
    winglight2016  
       2018-04-25 13:30:10 +08:00
    很久之前在金山面试,碰到过类似问题。。。
    gamecreating
        21
    gamecreating  
       2018-04-25 14:48:02 +08:00
    分段写入文件呗 内存占用少 那么 IO 占用就高咯
    拿时间换空间
    creedowl
        22
    creedowl  
       2018-04-25 17:35:10 +08:00
    时间排序了解一下 :doge:
    owt5008137
        23
    owt5008137  
       2018-04-25 18:39:36 +08:00 via Android
    归并排序+中间结果存磁盘
    glacer
        24
    glacer  
       2018-04-26 16:05:43 +08:00
    @610915518 不可能只有 1-9 吧
    RicardoScofileld
        25
    RicardoScofileld  
       2018-04-26 18:58:28 +08:00
    要是只有 1-9 就好办了,要是还有别的就麻烦了
    610915518
        26
    610915518  
       2018-04-26 23:00:00 +08:00
    @glacer 就算最大的数有好几百万的,10 MB 内存也够用了。
    xyjincan
        27
    xyjincan  
       2018-07-12 11:32:08 +08:00
    如果是不重复的数,可以分配一段内存,便利用位操作标记,然后输出,要不就要外部排序。
    老师讲过这个题,排序五百万电话号码,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3940 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 10:23 · PVG 18:23 · LAX 02:23 · JFK 05:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.