文章目录

  • 一、顺序查找
    • 1.1 无序表的顺序查找
    • 1.2 有序表的顺序查找
  • 二、折半查找
  • 三、分块查找

一、顺序查找

顺序查找又称线性查找,主要用于在线性表中进行查找。

1.1 无序表的顺序查找

对无序线性表进行顺序查找,查找失败时要遍历整个线性表

int search_seq_u(int elems[], int key) {int i;for(i = elems.length-1; i >=0 && elems[i]!=key; i--);return i;
}

同理,ASL失败 = n

1.2 有序表的顺序查找

对关键字有序线性表进行顺序查找,查找失败时不一定要遍历整个线性表

在此我们引入二叉排序树:

有n+1个失败节点,查找成功的ASL依旧为(n+1)/2


二、折半查找

折半查找又称二分查找,仅适用于有序的顺序表

算法思想:

首先将给定值key与表中中间位置元素的关键字比较,
若相等,则返回该元素的位置;
若不等,则在前半部分或者是后半部分进行查找.

查找序列升序时,
若key小于中间元素,则查找前半部分;
若key大于中间元素,则查找后半部分。
重复该过程,直到找到查找的元素为止;或查找失败。

int binary_search(int sq[], int key) {int low = 0, high = sq.length-1,mid;while(low<=high) {mid = (high+low) / 2;if(sq[mid]==key)return mid;else if(sq[mid]>key)high = mid-1;else {low = mid+1;}}return -1;
}

折半查找判定树(更像平衡二叉树,查找效率更高):

上面这个例子的ASL成功为:(1×1+2×2+3×4+4×4)/11 = 3【每个结点的查找次数加以来除以节点数】

ASL失败为(3×4+4×8)/12 = 11/3


三、分块查找

分块查找又称索引顺序查找,它吸取了顺序查找和折半查找各自的优点,
既有动态结构,又适于快速查找。

  • 如何分块:

    • 将查找表分为若干子块。块内的元素可以无序,但块间是有序的,即对于所有块有第 i 块的最大关键字小于第 i+ 1块的所有记录的关键字。

    • 建立索引表,索引表中的每个元素含有各块的最大关键字和各块中的第一个元素的地址,索引表按关键字有序排列。

  • 如何查找

    • 在索引表中确定待查记录所在的块,可以顺序查找或折半查找索引表。
    • 在块内进行顺序查找

数据结构之查找-顺序查找,折半查找,分块查找相关推荐

  1. php分块查找,索引查找(索引查找、分块查找) C语言实现

    1.基本概念 索引查找又称分级查找. 索引存储的基本思想是:首先把一个集合或线性表(他们对应为主表)按照一定的函数关系或条件划分成若干个逻辑上的子表,为每个子表分别建立一个索引项,由所有 这些索引项构 ...

  2. (王道408考研数据结构)第七章查找-第二节3:分块查找

    文章目录 一:分块查找基本思想 二:注意问题 三:效率分析 一:分块查找基本思想 分块查找:我们可以对数据集进行分块,使其分块有序,然后再对每一块建立一个索引项.分块有序具体是指 块内无序: 也即块内 ...

  3. 设计一个程序,在顺序表中采用分块查找发查找关键字。

    #include"iostream" using namespace std; class list{ private:int data[30];int length;int ke ...

  4. 408数据结构学习笔记——顺序查找、折半查找、分块查找

    目录 1.顺序查找 1.1.顺序查找的概念 1.2.顺序查找的代码 1.3.顺序查找的查找效率 1.4.顺序查找的优化 1.5.顺序表的时间复杂度 2.折半查找 2.1.折半查找的概念 2.2.折半查 ...

  5. 数据结构之查找算法:分块查找

    查找算法:分块查找 思维导图: 分块查找的定义: 如何分块: 如何查找: 代码实现: 查找效率: 思考: 思维导图: 分块查找的定义: 如何分块: 例: 如何查找: 1.先查找在哪块 2.然后查找块内 ...

  6. 查找——顺序、二分法、斐波那契、插值、分块

    目录 创建随机数列 顺序查找 二分法查找 斐波那契查找 插值查找 分块查找 创建随机数列 import random import timeit #创建随机的数列,n为数列个数,数列元素在0-1000 ...

  7. 数据结构与算法【Java】06---七大查找算法总结

    文章目录 数据结构与算法[Java]06---查找算法总结 1.查找算法简介 1.1.查找的定义 1.2.查找算法分类 1.3.常用查找算法 2.线性查找算法 2.1.线性查找简介 2.2.线性查找代 ...

  8. 数据结构学习笔记——顺序表的基本操作(超详细最终版+++)建议反复看看ヾ(≧▽≦*)o

    目录 前言 一.顺序表的定义 二.顺序表的初始化 三.顺序表的建立 四.顺序表的输出 五.顺序表的逆序输出 六.顺序表的插入操作 七.顺序表的删除操作 八.顺序表的按位和按值查找 基本操作的完整代码 ...

  9. 【数据结构-查找】1.通俗易懂讲解 —— 顺序-折半-分块查找

    平均查找长度是所有查找过程中进行关键字的比较次数的平均值 失败的平均查找长度:图画出来,补充为二叉树,其中补上的层数之和是分子,列表长度 len+1 是分母 顺序查找 顺序查找主要是用于线性表中的查找 ...

最新文章

  1. 有哪些事情是你成为程序员之后才知道的?
  2. java 获取系统当前时间
  3. SharePoint 2007 URL地址快速一览表
  4. webstorm创建代码模板
  5. JDK源码(20)-Thread
  6. 方德系统装exe文件_国产x86处理器+中科方德定制Linux 完美运行exe
  7. HDU2044 一只小蜜蜂...【递推】
  8. 【Andorid学习】declare-styleable:自定义控件的属性
  9. sharepoint开发流水账--sharepoint弹出窗体
  10. [导入]关于中文文本的截取
  11. Redis设计与实现(导航)
  12. Jsoup爬虫以及防反爬
  13. 预训练模型MT-BERT的探索和应用
  14. 初出茅庐的小李第23篇博客之WiFi模块建立TCP通信并获取B站粉丝数据
  15. Python中sys模块使用
  16. 鼠标停在按钮上 按钮变大
  17. z分数(z-score)——之前世今生
  18. 计算机社团评优申报资料,优秀社团会员申请书
  19. 控制系统Matlab仿真——校正
  20. 使用Python将sin(x)和cos(x)画在同一个图例里

热门文章

  1. python工资这么高为什么不学-一个来自35岁职场高管的忠告:Python为什么不得不学?...
  2. python练手经典100例-非常适合Python菜鸟练手的趣味题(内附学习教程分享)
  3. python利器-[python] bluepy 一款python封装的BLE利器
  4. 学python能做什么类型的工作-最适合学Python的几类人,有你吗?
  5. python可以做什么工作-Python入门后,想要从事自由职业可以做哪方面工作?
  6. 中考计算机考试exce,中考信息技术EXCEL操作.doc
  7. groupby java_Java流-在GroupBy之后获取内部元素
  8. LIRe提供的6种图像特征描述方法的评测
  9. Android中kt转java_将我现有的andorid工作室项目转换为kotlin?
  10. 如何处理 Kubeadm 搭建的集群证书过期问题