寻找处理文本文件的好办法!

sunqi 2000-03-06 08:53:00
现需处理一大行文本文件(15兆左右),该文本文件类似一数据库,每行为一条记录(大约有20万条记录),有好几个之段,如学号,身份证,科目,得分等,现如果我想统计每一身份证的总分为多少(身份证大约有1万条),然后在生成另一文本文件,存放汇总数据,用什么方法较好?原打算建立一struct数组存放身份证,得分,然后每读一行,查找该数组,如有该身份证,则加上得分,如没有,则新建一个.但这样每处理一条都要浏览一遍数组,时间复杂度太大.希望大家尽快帮我想个好办法,千万不要告诉我先转换成数据库,再统计!odbc的速度我也领教过的.也不要告诉我用foxpro编程,我讨厌foxpro!是不是可以用哈希表?但我不会用,如果可以的话,写几行关键代码和说明指点一下,或者有其他什么好办法? 谢了.
...全文
247 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sniper 2000-03-08
  • 打赏
  • 举报
回复
不用考虑我的建议了,用二叉树显然更好一些.但我不清楚为什么要用CStringArray.我是这样想的,二叉树的每个节点对应一个身份证,包括身份证号(LONGLONG)和总分(int),二叉树排序根据身份证号进行.其它就的二叉树的创建和检索的问题了.
sunqi 2000-03-07
  • 打赏
  • 举报
回复
QJW! 我看了CStringArray的帮助后,好像无法处理该问题呢?可能我还没有弄清除你的意思,能贴几行示例上来吗?THANKS!
sunqi 2000-03-07
  • 打赏
  • 举报
回复
谢谢各位,我先考虑一下CStringArray以及用二差树来试一下,请教sniper
"以320,111,74,02,15,311分成6级,包括树根共7级"是什么意思呢,是不是一个身份证要对应6个节点呢?
QJW 2000-03-07
  • 打赏
  • 举报
回复
用CStringArray,我用它做过几万条的记录,速度很快。
Sniper 2000-03-07
  • 打赏
  • 举报
回复
我是这样想的:
1.创建一个树形结构.比如320111740215311,以320,111,74,02,15,311分成6级,包括树根共7级;
2.叶节点对应一个身份证,存放311和该人的总分(初始为0);
3.每一层都应该是排序的;
4.在文本文件中读一行,如对应身份证在上述结构中不存在,则插入该身份证;否则将该行中的分数加入总分(见2);
5.重复4,直至文件处理完毕,将该树中各叶节点对应的身份证及其总分输出就可以了.

另外,用CList可以方便地生成上面的树.
paradox 2000-03-07
  • 打赏
  • 举报
回复
如果可能的话,转到UNIX上,现成的工具很多。
Lin 2000-03-07
  • 打赏
  • 举报
回复
强烈同意Un1。或者用Microsoft Text File数据库驱动。
我觉得所有的优化算法是不是都基于排序后的数据啊?不管怎样,哈西、哈东对没有索引的数据处理也比较困难。
建议:以后有这么多数据,不要用Text File了,就算Excel也忙不过来。
Un1 2000-03-07
  • 打赏
  • 举报
回复
我认为用Excel打开就可以得到一切。
lujn 2000-03-07
  • 打赏
  • 举报
回复
你这个问题的实质是快速查找身份证,数据结构中关于快速查找的算法很多,比如二差树.
具体地说就是以身份证号码来建立二差树,然后用二差树遍沥,这样查找比较快
fupf88 2000-03-06
  • 打赏
  • 举报
回复
先按身份证号排一次序,以后找号是否会方便点?

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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