Tekson

禧之狼

博客园 首页 联系 订阅 管理

9. 搜索

搜索方法有:顺序搜索法(即链表搜索法)、二分搜索法、二叉树搜索法、哈希表搜索法、TRIE树搜索法。

其中,链表搜索法的搜索速度为 ;二分搜索法与二叉树搜索法的搜索速度为 ;哈希表的搜索速度为 TRIE树搜索法的搜索的时间复杂度为 ,其中ITRIE树的层数/深度。

可见,按时间复杂度来衡量各种搜索方法的搜索速度,则可以得到如下搜索速度排序:

哈希表 > TRIE > 二叉搜索树 > 二分搜索法 > 链表搜索法

但是,时间复杂度仅仅是搜索速度的一种衡量标准而已,并不一定能真正体现各种搜索法对应于特征词库下的搜索速度排序。例如,如果具有很小的系数的时间复杂度为 的链表搜索法的搜索时间将可能小于具有很大系数的时间复杂度为 的二叉树搜索法的搜索时间。

二叉搜索树之所以优于二分搜索法,是因为前者可以解决后者不适用的情况,例如:二分搜索法不适用于那些数据值在运行时才能确定的场合(如编辑器符号表),因为有序数组对于表的插入和删除操作是一种低效工具。

另外,TRIE的搜索过程如下图所示:

其中,层数I不易被确定,根据不同的词库,同一个单词对应的层数可能不同;而且长的单词对应的层数不一定多。这也是为什么这里用一个参数I来代替层数,而没有一个具体的公式的原因了。

TRIE树查找一个字符串的最差的时间复杂度是O(I),这时未必就比二分搜索法好。

posted on 2009-11-09 22:38  珍宝老王  阅读(350)  评论(0编辑  收藏  举报