首页 > 其他分享 >数据结构 查找1

数据结构 查找1

时间:2023-06-13 22:22:52浏览次数:27  
标签:顺序 线性表 关键字 查找 失败 长度 数据结构

考纲内容

image

1.查找的基本概念

查找:从数据集合中查找满足某种条件的数据元素
查找结果中要注意,有查找成功和查找失败
查找表:用于查找的数据集合,定义有各种相关的操作:查询特定元素、根据条件检索数据、插入和删除。
静态/动态查找表:根据查找表中定义的操作种类区分
没有定义插入和删除的查找表称为静态查找表(相当于只读,不可更改)
允许插入和删除的查找表则称为动态查找表
根据这个区别,两种查找表分别适合不同种类的查找方法:静态表比较适合顺序/折半/散列查找,动态表适合二叉排序树查找和散列查找。

关键字:数据元素中用于唯一地确定某个数据项的值。
平均查找长度:查找长度指的是一次查找需要比较的关键字的次数。平均查找长度为所有查找过程中进行关键字的比较次数的平均值。
平均查找长度的计算公式:

2.线性的查找结构
有顺序查找、折半查找和分块查找这三种
*这里注意,这些查找方法对于顺序表和链表都是适合的,这两种结构都属于线性表

(1)顺序查找

也称线性查找 对于一般的线性表(这里指的是没有排过序的,也就是大多数情况下的线性表) 顺序查找其实就是最简单的暴力查找算法 从头到尾,逐个根据查找条件对每个关键字进行比较,查找到线性表尾部才能得出查找结果(成功或失败) 一般顺序查找的伪代码


*关于这里的“哨兵”:


链表中使用的,为了统一操作的附加头结点也是这种哨兵机制的一种。

顺序查找的算法复杂度分析:(通过平均查找长度长度进行分析)

当每个元素的查找概率相同时,查找成功的平均查找长度ASL是(n+1)/2,失败的ASL是n+1。

顺序查找的特殊情况:有序查找表的情况
有序查找表的算法复杂度只有在查找失败的情况下才有区别
有序表的情况中,当中途确定已经查找失败时,可以直接退出查找

在最坏情况下,到达结尾才发现查找失败,这时的平均查找长度和无序的情况相等。

标签:顺序,线性表,关键字,查找,失败,长度,数据结构
From: https://www.cnblogs.com/satsuki26681534/p/17478856.html

相关文章

  • 基础数据结构
    单调队列去尾、删头、窗口来维护一个单调队列例题:1.https://www.luogu.com.cn/problem/P1886代码://>>>Qiansui#include<map>#include<set>#include<stack>#include<cmath>#include<queue>#include<deque>#include<cstdio>#include&......
  • 《数据结构与算法》之二叉树(补充树)
    一.树结构之二叉树操作二叉树的查找二叉搜索树,也称二叉排序树或二叉查找树二叉搜索树:一棵二叉树,可以为空,如果不为空,应该满足以下性质:非空左子树的所有结点小于其根结点的键值非空右子树的所有结点大于其根结点的键值左右子树都是二叉搜索树对于二叉树的查找,其实沿用的是......
  • Java基本查找,二分查找,选择排序
    一、基本查找packagecom.itheima.d8_sort_binarysearch;/***基本查找*/importjava.util.Scanner;publicclassTest3{publicstaticvoidmain(String[]args){//1、定义一个数组(基本查找)int[]arr={12,95,1,3,76,4,2,93,56,49,67};......
  • HashMap内部的数据结构是什么?底层是怎么实现的?
    HashMap内部结构jdk8以前:数组+链表jdk8以后:数组+链表(当链表长度到8时,转化为红黑树)在并发的情况,发生扩容时,可能会产生循环链表,在执行get的时候,会触发死循环,引起CPU的100%问题,所以一定要避免在并发环境下使用HashMap。......
  • 1817.查找用户活跃分钟数
    问题描述1817.查找用户活跃分钟数(Medium)给你用户在LeetCode的操作日志,和一个整数k。日志用一个二维整数数组logs表示,其中每个logs[i]=[IDᵢ,timeᵢ]表示ID为IDᵢ的用户在timeᵢ分钟时执行了某个操作。多个用户可以同时执行操作,单个用户可以在同一分钟内......
  • 373. 查找和最小的 K 对数字 (Medium)
    问题描述373.查找和最小的K对数字(Medium)给定两个以升序排列的整数数组nums1和nums2,以及一个整数k。定义一对值(u,v),其中第一个元素来自nums1,第二个元素来自nums2。请找到和最小的k个数对(u₁,v₁),(u₂,v₂)...(uₖ,vₖ)。示例1:输入:nums1......
  • stream(流) 查找方法
    stream(流)查找方法StreamAPI提供了allMatch、anyMatch、noneMatch、findFirst和findAny方法importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;importjava.util.Optional;importjava.util.stream.Collectors;importjava.util.stream.Stream;public......
  • 记录一次查找文件中何处使用制表符(tab)
    尝试一直接在编辑器中显示不可见字符,看了半天也没有找到尝试二在vi中打开目标文件使用命令:setlist,制表符显示成^I,换行符显示成$直接输入/\t快速定位到制表符,此时可以输入n继续查找下一个查找结束,再输入setnolist......
  • 数据结构模拟器地址
    数据结构在线模拟器 Github网址:https://github.com/IACJ/react-datastructer在线网址:https://iacj.github.io/react-datastructer/#/  这个在线的模拟器包含“栈”、“队列”、“堆”、“BST”等数据结构,每个数据结构以图像的方式展示在我们面前,同时又有各自的帮助文......
  • 深入浅出数据结构
    作为一名前端开发工程师,你可能有时会问:学习数据结构或者算法对于前端工程师有用么?总的来说,这些基础学科在短期内收效确实甚微,但是我们首先不要将自己局限在前端工程师这点上,当我们把视野放到编程这个角度去说,数据结构算法一定是有用的,并且也是你未来的一个天花板。可以不花费集中的......