下载此文档

计算机软件及应用DS查找PPT课件.pptx


文档分类:IT计算机 | 页数:约98页 举报非法文档有奖
1/98
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/98 下载此文档
文档列表 文档介绍
若在查找的同时对表做修改操作(如插入和删除等),则相应的表称之为动态查找表(Dynamic Search Table)。否则称之为静态查找表(Static Search Table)。
若整个查找过程都在内存进行,则称之为内查找;反之,若查找过程中需要访问外存,则称之为外查找
查找表的数据结构表示
第1页/共98页
如何分析算法优劣?主要分析算法运算时所需要的时间和其存储结构占用的内存空间。而对于查找算法,执行的时间通常取决于关键字的比较次数,所以本章经常用平均比较次数,即平均查找长度 ASL(Average Search Length)
第2页/共98页
其中:
   1、n是结点的个数;
   2、Pi是查找第i个结点的概率。若不特别声明
,认为每个结点的查找概率相等,即
           pl = p2…… = pn = 1/n
   3、ci是找到第i个结点所需进行的比较次数
平均查找长度 ASL(Average Search Length)定义为 :
第3页/共98页
一、顺序查找(Sequential Search)
基本思想是:从表的一端开始,顺序扫描线性表,依次将扫描到的结点关键字和给定值K相比较。若当前扫描到的结点关键字与K相等,则查找成功;若扫描结束后,仍未找到关键字等于K的结点,则查找失败。
线性表的查找
第4页/共98页
基于顺序结构的顺序查找算法
类型说明
  typedef struct{
KeyType key; /*KeyType由用户定义*/
    InfoType otherinfo; /*此类型依赖于应用*/
   }NodeType;
  typedef NodeType Seqlist[n+1];
/*多出0号单元用作监视哨*/
第5页/共98页
具体算法
  int SeqSearch(Seqlist R,KeyType K)
    { /*在顺序表R[1..n]中顺序查找关键字为K的结点,*/
/*成功时返回找到的结点位置,失败时返回0*/
      int i;
      R[0].key=K; /*设置监视哨*/
      for(i=n;R[i].key!=K;i--);/*从表后往前找*/
      return i; /*若i为0,表示查找失败,否则R[i]为要找的结点*/
    } /*SeqSearch*/
第6页/共98页

算法分析
查找成功时的顺序查找的平均查找长度:
在等概率情况下,pi=1/n(1≤i≤n),故成功的平均查找长度为
       ASL= =(n+…+2+1)/n=(n+1)/2
即查找成功时的平均比较次数约为表长的一半。
第7页/共98页
顺序查找的缺点
查找效率低。
顺序查找的优点
算法简单,且对表的结构无任何要求,无论是用向量还是用链表来存放结点,也无论结点之间是否按关键字有序,它都同样适用。
第8页/共98页
二分查找又称折半查找,它是一种效率较高的查找方法。
二分查找要求:要求线性表是有序表,即表中结点按关键字有序,并且要用向量作为表的存储结构。不妨设有序表是递增有序的。
二、二分查找
第9页/共98页
(1)首先确定该区间的中点位置          mid = (2)然后将中间位置记录的键值R[mid].key和所给关键字K进行比较:若相等,则查找成功并返回此位置,否则须确定新的查找区间,继续二分查找。
二分查找的基本思想是:
第10页/共98页

计算机软件及应用DS查找PPT课件 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数98
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wz_198613
  • 文件大小416 KB
  • 时间2021-07-03
最近更新