社区
C语言
帖子详情
将500万个电话号码用不到1M内存空间输出到文件/C/C++
寒拓冰
2011-03-23 01:22:36
有一个文本文件中存储了约500万个电话号码,每个电话号码为7位数字,电话号码之间无重复,现希望将这些电话号码排序并输出到一个新文件中,最好使内存占用不到1M,求解决措施
...全文
230
5
打赏
收藏
将500万个电话号码用不到1M内存空间输出到文件/C/C++
有一个文本文件中存储了约500万个电话号码,每个电话号码为7位数字,电话号码之间无重复,现希望将这些电话号码排序并输出到一个新文件中,最好使内存占用不到1M,求解决措施
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
赵4老师
2011-03-23
打赏
举报
回复
压缩BCD码?
ww884203
2011-03-23
打赏
举报
回复
ls的思路是对的,补充一下。
首先建立一个bit[i]的大数组,每一个是一位也就是1或者0,8位一个字节,由于是7位数所以为10000000/8 = 125万位,而1MB=1024*1024*8=838万多位,足够了。
之后就是读入一个号码,作为一个整数index,然后bit[index] = 1,既读入了号码同时还排了序
最后全部读完了就遍历整个bit,如果是1则输出,不是1就不输出。
ljt3969636
2011-03-23
打赏
举报
回复
用位操作
伪码:
for[i=0:500万-1]
如果bit[i]=1 i为电话号;如(bit[110]=1 00000....000110号);
之后由高到低或者由低到高(按你排序的需要)遍历bit哪为1输出这位的位数即可
寒拓冰
2011-03-23
打赏
举报
回复
如果用树的形式表示的话,应该可以不?
这道题的算法还没想透
《C语言/
C++
学习指南》语法篇(从入门到精通)
一门初级、从入门到精通的C语言
C++
语法教程,由毕业于清华大学的业内人士执课。从简单的HelloWorld入门程序,到深入的C语言
C++
核心概念,均为您娓娓道来,言之必详、听之必懂。让C语言
C++
编程变得简单,让C语言
C++
...
C/
C++
实战入门
讲师有十五年以上C/
C++
实际项目开发经验,亲手写过的C/
C++
代码上百M,丰富的实战经验,不仅仅是讲语法,更主要的是讲每一个知识点在实际项目中作用,每一个知识点都会有实际使用范例。并且,把实际项目中的编程规范...
c/
c++
基础学习实战
1、这是一个C/
C++
新手基础教程,合适完全不懂程序的新手入坑,半生不熟的程序入坑,其他语言的程序想学
C++
。2、这是一个
C++
基础系列教程,本季是作为基础教程的第一集,主要为学习C语言,为学好
C++
打好坚实的基础,...
C++
第3课:
C++
内存泄露检测原理及案例实战
本课程具体的内容主要包括
C++
内存泄露案例、VS2015内存泄露检测、野指针...
文件
技术、Linux的虚拟内存技术、Linux的Valgrind内存泄露检测、Windows的VLD内存泄露检测、
C++
内存泄露检测方式之对象计数、
C++
内存泄露检测...
从c语言入门到
c++
使用高手
对于想入行
C++
开发的朋友,我通过这个套餐课程为您铺设一条从C语言入门到
C++
开发高手的语言学习和成长之路,让您在1年内成长到别人要花费5年甚至更久才能成长到的程度,您只需要按照这几门课程的从简到繁的顺序努力...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章