精华内容
下载资源
问答
  • 折半查找定义 折半查找算法实现及查找过程 折半查找判定树 查找成功 查找失败 总结 补充 链接 查找成功 查找失败 算法思路 算法实现 折半查找判定树 ...折半查找ASL 折半查找性能 总结 ...

    折半查找定义

    在这里插入图片描述

    折半查找算法实现及查找过程

    public int Binary_Search(int[] a,int n,int key){
    		int low=1,high=n,mid;
    		while(low<=high){
    			mid=(int)((low+high)/2);
    			if(key<a[mid])
    				high=mid-1;
    			else if(key>a[mid])
    				low=mid+1;
    			else return mid;
    		}
    		return 0;
    }
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    折半查找判定树

    查找成功
    在这里插入图片描述
    查找失败
    在这里插入图片描述

    总结

    在这里插入图片描述
    在这里插入图片描述

    补充

    链接
    查找成功
    在这里插入图片描述
    查找失败
    在这里插入图片描述
    在这里插入图片描述
    算法思路
    在这里插入图片描述
    算法实现
    在这里插入图片描述
    在这里插入图片描述
    折半查找判定树
    在这里插入图片描述
    折半查找ASL
    在这里插入图片描述
    在这里插入图片描述
    折半查找性能
    在这里插入图片描述
    总结
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • ASL(关键字的平均比较次数)=∑Pi*Ci(i....n) n:记录的个数,Pi:查找第i个记录的概率(通常认为pi=1/n),ci:找到第i个记录所需要的比较次数。 顺序查找 例: int Search_Seq( SSTable ST , KeyType key ) { ...

    ASL(关键字的平均比较次数)=∑Pi*Ci(i....n)

    n:记录的个数,Pi:查找第i个记录的概率(通常认为pi=1/n),ci:找到第i个记录所需要的比较次数。

    顺序查找

    例:

    int Search_Seq( SSTable  ST , KeyType  key )

    {    //若成功返回其位置信息,否则返回0  

    ST.R[0].key =key;    

    for( i=ST.length; ST.R[ i ].key!=key;  - - i  );  

    //不用for(i=n; i>0; - -i) 或 for(i=1; i<=n; i++)    

     return i;

    }

    1) 查找成功时的平均查找长度   设表中各记录查找概率相等     ASLs(n)=(1+2+ ... +n)/n =(n+1)/2。

    2)查找不成功时的平均查找长度    ASLf =n+1。

    对于顺序查找,查找概率相等时,ASL相同。 查找概率不等时,如果从前向后查找,则按查找概率由大到小排列的有序表其ASL要比无序表ASL小。

    折半查找:

    如图,根据判定树求解,假设每个元素的查找概率相等,则查找成功时的asl=1/11(概率)*(1*1+2*2+4*3+4*4)。第一层的一个数比较成功时所需比较次数一次,第二层的两个数需要两次,依此类推。即查找成功时比较次数:为该结点在判定树上的层次数,不超过树的深度  d = 【 log2 n 】(向下取值)  + 1, 查找不成功的过程就是走了一条从根结点到外部结点的路径d或d-1。

    最近在学数据结构,很多地方不会,所以整理一下,当做个笔记,错误的地方请指正。

     

     

     

     

     

    展开全文
  • 查找 —— 折半查找

    2021-09-02 17:16:22
    特点1:知道结点的个数就能画出折半查找判定树、进而算出ASL 特点2:折半查找判定树一定是平衡二叉树(注意树高) 特点3:折半查找判定树一定是二叉排序树(失败结点个数) 注:向上取整也有类似特性 4.折半...

    本文主要介绍以下几方面的知识:

    1. 折半查找(算法思想、实现代码、效率分析)
    2. 折半查找判定树(特点、绘制)
      在这里插入图片描述

    1.算法思想
    加粗样式
    2.实现代码
    在这里插入图片描述
    3.查找效率分析
    在这里插入图片描述
    3.折半查找判定树构造(向上取整)

    • 特点1:知道结点的个数就能画出折半查找判定树、进而算出ASL
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • 特点2:折半查找判定树一定是平衡二叉树(注意树高)
      在这里插入图片描述
    • 特点3:折半查找判定树一定是二叉排序树(失败结点个数)
      在这里插入图片描述
    • 注:向上取整也有类似特性

    4.折半查找时间复杂度
    在这里插入图片描述

    展开全文
  • 顺序查找 折半查找的平均查找长度分析 ASL:平均查找长度 其中n为查找表中元素个数,Pi为查找第i个元素的概率,通常假设每个元素查找概率相同,Pi=1/n,Ci是找到第i个元素的比较次数。 ASL=∑i=1npici ASL=\sum_{i=1...

    顺序查找 折半查找的平均查找长度分析

    ASL:平均查找长度

    其中n为查找表中元素个数,Pi为查找第i个元素的概率,通常假设每个元素查找概率相同,Pi=1/n,Ci是找到第i个元素的比较次数。
    A S L = ∑ i = 1 n p i c i ASL=\sum_{i=1}^{n} p_ic_i ASL=i=1npici

    一般顺序查找的平均查找长度:

    • 因为顺序查找就是顺序存储 一个一个比较,所以如果查找成功的话说明就和之前不相等的元素已经比较过了。
    • 所以第 n 个元素就是比较了 n 次
    • 每个元素都比较了其所在位序的次数
    • 每个元素被查找的概率都是1/n 所以

    A S L 成 功 = 1 n ( 1 + 2 + 3 + … + n ) = n + 1 2 ASL_{成功}=\frac{1}{n}(1+2+3+…+n)=\frac{n+1}{2} ASL=n1(1+2+3++n)=2n+1

    $ASL_{成功}=n+1 $

    有序顺序表的平均查找长度:

    • 查找成功的 ASL 不影响

    • 如果查找不成功的话,因为顺序表有序,所以可以提前结束,从而缩短查找失败的比较次数,需要画个简单【判定树】

    • 举个例子,在[10 20 30 40 50 60]中查找

    image-20210924175755222
    • 失败的一共有 n+1个结点,所以每个结点的概率就是 1 n + 1 \frac{1}{n+1} n+11
    • 比较次数是 每个失败结点上一层的层数

    A S L 失 败 = 1 n + 1 [ 1 + 2 + 3 + … + n + n ] = n 2 + n n + 1 ASL_{失败} = \frac{1}{n+1}[1+2+3+…+n+n]=\frac{n}{2}+\frac{n}{n+1} ASL=n+11[1+2+3++n+n]=2n+n+1n

    折半查找的平均查找长度:

    • 要涉及到判定树:n 个元素就有n 个【内部结点】 n+1个【外部结点】

    • 【判定树】一定是【满二叉树】

    • 根据折半算法画出初级判定树(只有内部结点),其他空位用【查找失败的方框代替】

    • 算 ASL 直接就是算 [每层结点的个数*层数]➗结点个数

    image-20210924180742717

    • 不成功要具体例子具体计算。
    展开全文
  • 文章目录查找查找的概念顺序查找顺序查找-算法原理顺序查找-算法实现顺序查找-性能分析折半查找折半查找-算法原理折半查找-算法实现折半查找-性能分析分块查找分块查找-算法原理分块查找-算法实现分块查找-性能分析 ...
  • 折半查找判定数及平均查找长度

    万次阅读 多人点赞 2016-07-06 13:28:31
    折半查找判定数及平均查找长度 折半查找的过程看,可用二叉树来描述,二叉树中的每个结点对应有序表中的一个记录,结点中的值为该记录在表中的位置。通常称这个描述折半查找二叉树的过程称为折半查找判定树。 ...
  • 二分查找(折半查找)

    2018-11-12 23:13:22
    二分查找(折半查找) title: 二分查找 tags: 数据结构与算法之美 author: 辰砂 一、简介 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,...
  • 查找算法之折半查找

    2021-01-05 14:48:30
    查找算法之折半查找 折半查找算法的思路 首先查找的关键字在有序的查找表内, 这是折半查找的前提.(我们假设查找表内元素升序排列) 确定查找表中的范围,一般用两个下标来表示范围: left = 0,right = length -1 利用...
  • 通过比较折半查找的平均查找长度,同前面介绍的顺序查找相对比,明显折半查找的效率要高。但是折半查找算法只适用于有序表,同时仅限于查找表用顺序存储结构表示。 当查找表使用链式存储结构表示时,折半...
  • 查找之折半查找

    2018-04-26 21:22:19
    折半查找又称二分查找,适用有序的顺序表。(附:笔试考察查找,这个是经典查找法) 基本思路:首先给定值key与表中中间位置元素的关键字,若相等则查找成功,返回位置。若不等,则所需查找的元素只能在中间元素外...
  • 折半查找判定树及平均查找长度

    万次阅读 2016-12-17 12:49:13
    折半查找的过程看,以有序表的中间记录作为比较对象,并以中间记录将表分割为两个子表,对子表继续上述操作。所以,对表中每个记录的查找过程,可用二叉树来描述,二叉树中的每个结点对应有序表中的一个记录,结点...
  • 折半查找

    千次阅读 2010-05-20 21:39:00
    折半查找的算法讨论: 优点: ASL≤log2n,即每经过一次比较,查找范围就缩小一半。经log2n 次计较就可以完成查找过程。 缺点:因要求有序,所以要求查找数列必须有序,而对所有数据元素按大小排序是非常费时的操作。...
  • 6.2.1顺序查找 主要用于线性表中进行查找。从查找表的一端开始,顺序扫描查找表,依次将扫描到的关键字和待查找的值Key进行比较。如果相等,则查找成功。如果扫描结束仍然没有发现相等的数据元素,则查找失败。 int...
  • 顺序查找、折半查找和索引查找顺序查找折半查找索引查找 顺序查找 算法: int SeqSearch(Seq array[],int n,DataType key) { int i=n; array[0].key=key; while(array[i].key!=key) i--; return i; } 完整代码...
  • 【数据结构】折半查找及其二叉判定树画法

    万次阅读 多人点赞 2019-09-25 23:55:40
    折半查找又叫二分查找,是数据结构中一种很重要的查找方式。 其特点有以下几个: 只能对有序的顺序表进行查找。 是一种静态查找。 查找的平均时间复杂度为o(log2n)。 成功平均查找长度ASL约log2(n+1)-1。 ...
  • 查找算法——折半查找

    万次阅读 2017-05-31 21:04:03
    介绍折半查找,又称作二分查找。这个查找的算法的特点,就是,要求数据要是有序的。1 ,存储结构一定是顺序存储 2 ,关键字大小必须有序排列然后,利用这组有序的数据之间的关系,来进行折半的查找。比方说,这组...
  • 6.2.2 折半查找

    2016-09-18 16:46:40
    折半查找,又称二分查找,它适用于有序的顺序表。基本思路是:首先将给定值key与表中中间位置元素的关键字比较,若相等,则查找成功,返回该元素的存储位置;若不等,则所需查找的元素只能在中间元素以外的前半部分...
  • 【数据结构】顺序查找和折半查找

    千次阅读 多人点赞 2021-04-03 08:07:36
    摘要:在本篇文章中,主要讲述了在数据结构中所涉及的几大查找算法,包括:顺序查找、折半查找、分块查找和散列表查找。这些查找方式都是数据结构中最基本的查找方式,并且在数据结构中运用广泛。在查找算法中,最为...
  • 程序员技术交流①群:736386324...在折半查找之前对查找表按照所查的关键字进行排序的意思是:若查找表中存储的数据元素含有多个关键字时,使用哪种关键字做折半查找,就需要提前以该关键字对所有数据进行排序。 ...
  • 顺序查找、折半查找、索引查找 顺序查找 顺序查找(Sequential Search)的查找过程为:从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,否则不成功...
  • 折半查找的过程看,以有序表的中间记录作为比较对象,并以中间记录将表分割为两个子表,对子表继续上述操作。所以,对表中每个记录的查找过程,可用二叉树来描述,二叉树中的每个结点对应有序表中的一个记录,结点...
  • 折半查找成功时的平均查找长度

    千次阅读 2019-02-14 09:30:30
    * 深入掌握折半查找过程和折半查找算法分析 * 实验内容: * 设计程序,建立有序序列R[0...n-1]进行二分查找产生的判断树, * 在此基础上完成如下功能: * 1、输出n=11时的判定树并求成功情况下的平均查找长度ASL。 * 2...
  • 目录折半查找的算法思想查找过程演示折半查找的判定树代码实现 折半查找的算法思想 折半查找又称二分查找,仅适用于有序的顺序表 首先将给定值key与表中中间位置元素的关键字比较, 若相等,则返回该元素的位置; 若...
  • 目录基本概念顺序查找 Sequential Search查找过程算法实现性能分析ASL总结折半查找 Binary Search查找过程算法实现性能分析判定树ASL总结*补充:证明在每个元素的搜索概率相等时,二分查找效率最高分块查找 / 索引...
  • //顺序查找 //平均查找长度ASL=(1+n)/2 int Search(int a[],int n,int k) { int i; for(i=1;...//折半查找 //时间复杂度O(log以2为底n的对数) //平均查找长度log以2为底n+1的对数,再减1 int Bsearc
  • 顺序查找和折半查找算法

    千次阅读 2019-10-30 15:48:34
    衡量查找算法的效率的一个指标 平均查找长度–对关键字比较次数的平均值 顺序查找 又称作线性查找,主要用于在线性表中进行查找。适用于对一般无序线性表的查找。 基本思想:从线性表的一端开始查找,逐个检查...
  • 折半查找又称二分查找,只能适用于有序的顺序表。 //折半查找 int Bsearch(int R[],int low,int high,int key){ int min; while(low<=high){ mid=(low+high)/2; //取中间位置 if(R[mid]==key) //查找成功...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,619
精华内容 647
关键字:

折半查找asl