日期:2014-05-19  浏览次数:20953 次

数组搜索问题
字符串数组a[100000],字符串数组b[100000],现用数组b每一个元素查找是否在数组a中存在?
按正常的查找方法(lastofindex)为100000×100000次,那样速度一定很慢,现问下高手有无其他快点的方法?(用dataset的relation是否快点呢?)

------解决方案--------------------
StringDictionary是键和值为字符串的哈希表,在System.Collections.Specialized命名空间
可以通过计算哈希值直接找到相应字符串
------解决方案--------------------
这个问题你可以提高到算法得层次上来探讨,也就是说你现在要去查找,任何一本数据结构的书里都会有最优的查找算法,你可以借鉴借鉴。
个人认为这个问题的难点是你如何去建立查找模型,比如说我们最长用的二分发查找,就是那一个已经知道的值到未知的数组中去查找,但是现在你要查找的原和目都是未知的,这就需要去创建查找模型,就是说你那什么去查,在那里查的问题。
还有你用数组来存储十万条的数据,即使你不作任何操作,我想你的效率也快不到那里去,
------解决方案--------------------
1,要想查找速度快,就得做好前期的工作(比如排序,或是建二叉树),这是没有办法的;
2,以空间换时间(或以时间换空间),这是永恒不变的.

个人建议对数组a建AVL树,在100000个数据里面查找某个数是否存在,最多只比较17次就行了.