三种不同查找算法实际查找性能的对比

一、查找问题的介绍        查找问题就是在给定的集合(或者是多重集,它允许多个元素具有相同的值)中找寻一个给定的值,我们称之为查找键。有许多查找算法可供选择,其中既包括直截了当的顺序搜索,也包括效率极高但应用受限的折半查找,还有那些将原集合用另一种形式表示以方便查找的算法。最后一类算法对于现实应用具有特别重要的价值,因为它们对于大型数据库的信息存取来说是不可或缺的。
摘要由CSDN通过智能技术生成

   一、查找问题的介绍

        查找问题就是在给定的集合(或者是多重集,它允许多个元素具有相同的值)中找寻一个给定的值,我们称之为查找键。有许多查找算法可供选择,其中既包括直截了当的顺序搜索,也包括效率极高但应用受限的折半查找,还有那些将原集合用另一种形式表示以方便查找的算法。最后一类算法对于现实应用具有特别重要的价值,因为它们对于大型数据库的信息存取来说是不可或缺的。

         对于查找来说,没有一种算法在任何情况下都是最优的。有些算法速度比其他算法快,但需要较多的存储空间;有些算法速度非常快,但仅适用于有序的数组,诸如此类。和排序算法不同,查找算法没有稳定性问题,但会发生其他问题。具体来说,如果应用里的数据相对于查找次数频繁变化,查找问题就必须结合另外两种操作一起考虑:在数据集合中添加和删除元素的操作。在这种情况下,必须自习选择数据结构和算法,以便在各种操作的需求之间达到一个平衡。而且,对于用于高效查找的特大型数据集合来说,如何组织其结构是一项不同寻常的挑战,而这对实际应用具有非常重要的意义。

针对查找问题采用了三种方法:线性表直接查找,二叉排序树查找,平衡二叉排序树查找三种方法。

1)其中线性表(Linear List,LL)直接查找,通过将数据集合存储在数组中,每次从数组首地址开始一直搜索到数组末尾,直到查找到待查元素和到达数组末尾为止。并针对该方法给出了一个优化的算法,对数组中的元素增加一个频度域,将查找频度最高的元素放在数组最前面,依次按频度对数组中元素进行排序。

2)二叉排序树(Binary Sort Tree,BST)查找,BST又称二叉搜索树,其定义为:二叉排序树或者是一颗空树,或者是具有如下性质的二叉树:①若左子树不空,则左子树上所有节点的值均小于它的根节点的值;②若右子树不空,则右子树上所有节点的值均大于它的根节点的值;③左、右子树也分别是二叉排序树;④没有键值相等的节点。从BST的定义中可知,在BST中查找一个元素的过程,即从根节点开始,每次根据待查元素与根节点的比较,决定查找成功或者依左或右子树查找,直到找到待查元素或者都到叶子节点为止。

3)平衡二叉查找树(

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值