求对txt中的数据进行排序....

seas110 2006-07-27 12:53:39
问题一:
现有一个记事本文件,里面有大概一百万条数字记录,现在要对其进行排序,请问用什么排序方法最快.....能否借源码一阅

问题二:
现有一个记事本文件,里面有大概一百万条记录,其中有些记录是重复的,,,,我想按重复的次数,对其重新排序,重复次数最多的排在最前面,

谢谢
...全文
260 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
seas110 2006-07-30
  • 打赏
  • 举报
回复
怎样判断需要多大的内存??
SammyLan 2006-07-30
  • 打赏
  • 举报
回复
Windows的话用内存映射文件
UNIX的话用nmap
唐巧 2006-07-28
  • 打赏
  • 举报
回复
如果真的只是手机号的话,1百万行需要的内存大概为11M,所以还是可以读出来的。
第一题可以读出来后用快排。
第二题可以用STL的MAP来实现快速查找和统计次数。

如果题目的本意是想说程序没法直接读出来的话,那么只能用外排序的知识了。
外排序的特点在于时间花在读写文件上,所以在排序时要尽量少的文件读写操作。
chenhu_doc 2006-07-27
  • 打赏
  • 举报
回复
现有一个记事本文件,里面有大概一百万条记录,其中有些记录是重复的,,,,我想按重复的次数,对其重新排序,重复次数最多的排在最前面,

---------------
可以用stl中的 multiset 来考虑,读入内存,存储到multiset容器中后,
然后做一次循环,iterator ...
用到这个容器的操作: lower_bound(k);
upper_bound(k); //来确定相同大小的范围

equal_range(k);可以直接搞定上面!
chenhu_doc 2006-07-27
  • 打赏
  • 举报
回复
大概一百万条数字记录,现在要对其进行排序,请问用什么排序方法最快
---------------------
要看键值的大小(size)了,如果size*1000000对于内存来说很吃紧的话,就用外部排序了。
如果得出结果对于计算机来说,可以接受,就用快排。。

注意:只对键值排序,然后取行存储到另外一个文件。。。

chenhu_doc 2006-07-27
  • 打赏
  • 举报
回复
记事本文件 的容量有多大??/
seas110 2006-07-27
  • 打赏
  • 举报
回复
补充一下,记事本的数字记录是如下所示,就当是手机号:
13512345678
13612345678
...........

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧