问题是这样的
我有两个文件,每个大约30000行左右,我要读取一个文件的每一行,再到别一个文件里去逐行找(行的前部分相同的),不知道怎样读取,查找更有效率?请大家给些建议
我有两个文件,每个大约30000行左右,我要读取一个文件的每一行,再到别一个文件里去逐行找(行的前部分相同的),不知道怎样读取,查找更有效率?请大家给些建议
解决方案 »
- 如何读取xml文件中节点的值?
- 数字转人民币格式
- 为什么程序关闭后向access中插入数据后又消失?
- 从数据库读取字段判断,有数据Check框选择,没有就不选中
- 谁用过Nyditot Virtual display?
- C#中关于word控制与打印的问题(在线等)
- 请教在程序需要循环处理数据,用线程好还是用Timer好,个人感觉线程控制太麻烦
- ListView Details模式下【数据展示问题】
- c#建立opcClient与opc服务器通讯异步读写变量,出现“拒绝访问”
- 在windows server 2003安装中.net要更新哪些组件
- MDI如何获取真是的子窗口高度
- 在Visual Studio中怎么让图片框保存.psd格式的图片
将两个文件分别放到两个二维数组(或者其他什么)里面,第一维记录需要查找的部分,第二维记录行号。
在读取这两个文件的时候,我们要根据查找部分对数据进行排序,这也是为什么我们要记录行号的原因。
这样,我们就得到了两个经过排序的二维数组。
接下来取一下二维数组的长度,用长度短的那个数组作为循环数组,长度长的那个作为被搜索的数组,对于短数组中的每一个需要查找的数据,在长数组中使用二分法进行查找。
为什么要这样做呢?
我们假设这两个数组长度分别是m,n,且m>n,因为二分法的时间复杂度是log(m),整个算法的时间复杂度就是nlog(m),这个比不排序直接遍历的时间复杂度mn降低了很多,尤其是在数据很多的情况下。
现在就是想怎样处理理有效,逐行比较就太耗时了