我有一个包含大约200,000条记录的file.txt.
每条记录的格式为123456-99-Text.123456是唯一的帐号,99是我需要的位置代码(从01更改为99),文本无关紧要.这些帐号按顺序排序,并在每个交流的文件中有换行符(111111,11111,1111113等).
我制作了一个视觉工作室文本框和搜索按钮,让某人搜索帐号.帐号实际上是11位数,但只有前6位.我把它写成字符串actnum = textbox1.text.substring(0,6)
我写了一个foreach (string x in file.readline('file.txt'))与if (x.contains(actnum))随后string code = x.substring(8,2))的发言.
该程序运行良好,但因为有很多记录,如果有人搜索不存在的帐号,或列表底部的数字,程序会锁定好10秒钟,然后再转到"未找到号码"否则声明,或永远找到最后一条记录.
我的问题:
阅读二进制搜索我试图尝试一个没有太大成功.我似乎无法使数组或文件像合法的二进制搜索一样.有没有办法从textbox1中取出6位数的actnum,将它与6位数帐号的数组子串进行比较,然后从该特定行中获取子串99代码?
二进制搜索会有很大帮助!我可以拿555-555并将其与记录文件的上半部分或下半部分进行比较,然后继续搜索直到我对我需要的线路进行搜索,抓住整条线,然后将99输出.我遇到的问题是我似乎无法获得文件的正确整数转换,因为它包含数字和文本,因此我无法正确使用<,>,=符号.
任何有关这方面的帮助将不胜感激.我目前的程序实际上有效,但有时非常慢.