码迷,mamicode.com
首页 > 其他好文 > 详细

第七章查找学习小结

时间:2019-06-03 00:23:20      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:img   需要   效率   技术   顺序查找   概率   插入   length   eve   

一、查找及部分基本概念

 

  部分概念:

  1. 查找表: 要进行查找的数据结构,可以是线性表、树表、散列表等。

  2. 关键字: 能够标识一个元素的数据项。

  3. 动态查找和静态查找: 查找过程中可以对查找表进行操作(比如说插入、删除)称为动态查找表,不能操作则为静态查找表。

  4. 平均查找长度(ASL):为确定要查找的元素而需要与其他元素进行比较的期望值。 

  ASL = (c1p1 + c2p2 + ... + cnpn) / n  其中pi是第i条记录的概率,ci为找到第i条记录时与给定值已经比较过的次数。

  如果单说查找,我们其实已经非常熟悉了。但是本章着重解决的是在不同的情境下不同查找方法的效率问题,下面我会回顾书上学习到的几个查找的基本方法并分析其在不同应用情境下的优劣性。

 

二、线性表的查找

 

  1. 顺序查找  从头遍历到尾(也可以倒过来)

   特别指出:设置监视哨的顺序查找,其相较于普通查找的区别在于:通过改变判断条件减小了比较次数

技术图片
int Search(SSTable ST , KeyType key){
  ST.R[0]. key = key;
  for(i = ST.length; ST.R[i] . key != key ; --i);
  return i;
}
设置监视哨的顺序查找

  ASL分析:若查找概率相同且进行顺序查找,概率相同:p1 + p2 +... +pn = 1; 顺序查找:(1+2+...+n)/n = (1+n)*n/2n =   (n+1)/2;

  故ASL = (1+n)/2

 

  2. 折半查找  

   从表的中间记录开始,比较给定值和中间记录是否相等。如果不相等,则在大于或者小于中间值的一部分再次进行折半查找。

   ASL分析:若查找概率相同,ASL = (c1+c2+...+cn)/n ;  c min = 1 , c max = 不大于log2 n的整数 +1 ;ASL = (1 * 2^(1-1) + 2 * 2^(2-1) + ... + (log2 n +1)*2^(log2n))/n = (n+1)*log2(n+1)/n -1 n较大时取近似值log2(n+1)-1

  ASL = log2(n+1) - 1

  

 

第七章查找学习小结

标签:img   需要   效率   技术   顺序查找   概率   插入   length   eve   

原文地址:https://www.cnblogs.com/suhan717/p/10965143.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!