查找的概念

查找表的概念

QQ图片20200504170648.pngQQ图片20200504170655.png

查找表的分类

QQ图片20200504170721.png

关键字(类似主键)

QQ图片20200504170836.png

查找QQ图片20200504170907.pngQQ图片20200504170952.pngQQ图片20200504171029.png

静态查找表

QQ图片20200504171420.png

顺序查找表

QQ图片20200504171509.png

查找过程
  • 顺序表中表长比元素个数多一个,0号是空的,不存储元素,而是将被查找元素存在0号单元里,从尾部进行查找,这样最终一定能找到,从而提高效率。0号单元叫做监视哨QQ图片20200504171808.pngQQ图片20200504171848.png
查找效率

QQ图片20200504172115.png

  • 顺序查找比较低效,要平均比较一半元素,当n大时,效率就会很低,不适合作为常用查找结构
  • 查找效率的改善方法

QQ图片20200504172233.png

有序表的查找

QQ图片20200504172649.png

折半查找

QQ图片20200504172758.png一定是顺序存储结构,因为链式存储无法随机查找,而折半查找要自己选择比较的位置

算法实现

QQ图片20200504172944.pngQQ图片20200504173504.pngQQ图片20200504173549.pngQQ图片20200504173611.png

  • 顺序查找每次只能排除一个元素,折半查找每次能排除当前区间的一半元素。折半查找是顺序查找中效率最高的方法,但是要求苛刻:必须是顺序存储结构,而且查找前做好排序
性能分析

由于折半查找要么找到,否则就到左侧或右侧找,因此生成一课二叉树QQ图片20200504173937.pngQQ图片20200504174131.pngQQ图片20200504174210.png

顺序表和查找表的比较QQ图片20200504174252.png

索引顺序表

  • 索引表成因:由于顺序表查找效率低,而折半查找虽然效率高,却需要元素做大排序,花费代价多,因此我们做了平衡,部分实现有序
  • 索引表包含最大元素和第一个元素位置。块内无序排放;块之间有序,即后边块的所有值要大于前边所有块的值(块内无序,块间有序QQ图片20200504180612.png
查找过程

QQ图片20200504180903.png

查找效率

QQ图片20200504181116.png

三种方法比较

QQ图片20200504181254.png

几种插入表的特性

QQ图片20200504181457.png

  • 由上可见,有序表查找效率高,但是插入删除效率低,只适合做静态查找QQ图片20200504181613.png

无欲则刚
76 声望15 粉丝

« 上一篇
栈和队列
下一篇 »
查找表(2)