您好,欢迎来到年旅网。
搜索
您的当前位置:首页数据结构查找算法

数据结构查找算法

来源:年旅网

平均查找长度:

一次查找的长度:需要比较的关键字次数
平均查找长度ASL:所有查找过程中进行关键字的比较次数的平均值

顺序查找

一般线性表的顺序查找

缺点:当n较大时,平均查找长度较大,效率低
优点:顺序存储和链式存储都可以
ASL成功=(n+1)/2
ASL失败=n+1

有序表的顺序查找

ASL成功=(n+1)/2
ASL失败=n/2+n/(n+1)

折半查找

仅适用于有序的顺序表

折半查找可以用判定树描述,判定树是一颗平衡二叉树

每次把一个数组从中间节点分割,总是把数组分为节点数相差最多不超过1的两个子数组

  • 查找成功时的平均长度:从根节点到目的节点的路径上的节点数
  • 查找失败:从根节点到对应失败节点的父节点路径上的节点数

每个节点值均大于其左子节点值,且均小于右子节点值;
n个元素,n个非叶节点,n+1个叶节点

折半查找法查找到给定值的比较次数最多不会超过树的高度
ASL成功=(1/n)(11+2+2+…+h+2^(h-1))=log2(n+1)-1
h=log2(n+1)向上取整

时间复杂度O(log2n),比顺序查找效率高
仅适合顺序存储结构,不适合链式(需要方便的定位查找区域,要求线性表具有随机存取的特性)

分块查找

块内元素可以无序,块之间是有序的
计算的ASL看书p275

王道做题总结

7.2.4

  • 折半查找大部分情况下比顺序查找快,某些特殊情况(查找含1000个元素的有序表的第一个元素,顺序查找比较次数为1,折半查找比较次数将近10次)
  • 折半查找和二叉排序树的时间性能:有时不相同

二叉排序树的查找性能与数据的输入顺序有关,最好情况下的平均查找长度和折半查找相同,最坏情况是形成单支数,查找长度O(n)

  • 采用折半查找法查找不存在的元素,求最多最少的比较次数
    法1:
    画出查找过程中构成的判定树,最小的分支高度对于最少的比较次数,最大的分支高度对应最多的比较次数。(若出现长度为15的顺序表,判定树刚好是一棵满树,最多比较次数和最少比较次数相同)
    法2:
    公式,最大分支高度h=log2*(n+1)向上取整,由于判定树不是一颗满树,因此最小分支高度h-1
  • 折半查找查找成功或失败的平均查找长度
    画出判定树
  • 【题型】给二叉树,可能成为折半查找判定树的是
    方法:折半查找判定树实际上是一棵二叉排序树,他的中序序列是一个有序序列,可以在树节点上依次填上相应的元素,符合折半查找规则的树即为所求。
  • 分块查找中,索引项和索引块内部都采用折半查找,则查找效率最高

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务