数据结构(5)

文章目录

  • [1. 查找](#1. 查找)
  • [2. 顺序查找](#2. 顺序查找)
  • [3. 折半查找](#3. 折半查找)
  • [4. 分块查找](#4. 分块查找)
  • [5. 二叉排序树](#5. 二叉排序树)

1. 查找

1. 查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找。

2. 查找表:用于查找的数据集合称为查找表。 (1) 静态查找表:一个查找表的操作只涉及查找操作,无须动态地修改查找表。 (2) 需要动态地插入或删除的查找表。

3. 关键字:数据元素中唯一标识该元素的某个数据项的值。

使用基于关键字的查找,查找结果应该是唯一的。例如,在由一个学生元素构成的数据集合中,学生元素中 "学号" 这一数据项的值唯一标识一名学生。

2. 顺序查找

1. 顺序查找又称线性查找,它对顺序表和链表都是适用的。对于顺序表,可通过数组下标递增来顺序扫描每个元素;对于链表,可通过指针 next 来依次扫描每个元素。

2. 顺序查找通常分为对一般的无序线性表的顺序查找和对按关键字有序的线性表的顺序查找。

  • 一般的线性表的顺序查找:(1) 从线性表的一端开始,逐个检查关键字是否满足给定的条件。(2) 若查找到某个元素的关键字满足给定条件,则查找成功,返回该元素在线性表中的位置。(3) 若已经查找到表的另一端,但还没有查找到符合给定条件的元素,则返回查找失败的信息。
  • 有序线性表的顺序查找:若在查找之前就已知表是关键字有序的,则查找失败时可以不用再比较到表的另一端就能返回查找失败的信息,从而降低查找失败的平均查找长度。

3. 折半查找

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

2. 折半查找的基本思想:(1) 首先将给定Key与表中的中间位置的元素比较,若相等,则查找成功,返回该元素的存储位置。(2) 若不等,则所需查找的元素只能在中间元素以外的前半部分或后半部分,然后在缩小的范围内继续进行同样的查找。(3) 重复上述步骤,直到找到为止。

注:当折半查找算法选取中间结点时,既可以采用向下取整,又可以采用向上取整。但每次查找的取整方式必须相同。

4. 分块查找

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

2. 分块查找的基本思想:将查找表分为若干子块。块内的元素可以无序,但块间的元素是有序的,即第一块中的最大关键字小于第二个块中的所有记录的关键字,第二块中的最大关键字小于第三个块中的所有记录的关键字,依次类推。

5. 二叉排序树

1. 二叉排序树的特性:(1) 若左子树非空,则左子树上所有结点的值均小于根结点的值。(2) 若右子树非空,则右子树上所有结点的值均大于根结点的值。(3) 左、右子树也分别是一棵二叉排序树。

2. 二叉排序树的查找是从根结点开始,沿某个分支逐层向下比较的过程。若二叉排序树非空,先将给定值与根结点的关键字比较,若相等,则查找成功;若不等,小于根结点的关键字则在左子树查找,否则在根结点的右子树上查找。

相关推荐
一梦浮华5 分钟前
自学嵌入式 day 18 - 数据结构 1
数据结构
ai.Neo43 分钟前
牛客网NC22015:最大值和最小值
数据结构·c++·算法
范纹杉想快点毕业3 小时前
以项目的方式学QT开发(一)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
c语言·数据结构·c++·git·qt·链表·github
米粉03053 小时前
算法图表总结:查找、排序与递归(含 Mermaid 图示)
数据结构·算法·排序算法
黑色的山岗在沉睡4 小时前
LeetCode100.4 移动零
数据结构·算法·leetcode
霖004 小时前
PCIe数据采集系统
数据结构·经验分享·单片机·嵌入式硬件·fpga开发·信号处理
敷啊敷衍4 小时前
深入探索 C++ 中的 string 类:从基础到实践
开发语言·数据结构·c++
方博士AI机器人4 小时前
算法与数据结构 - 二叉树结构入门
数据结构·算法·二叉树
{⌐■_■}4 小时前
【redis】redis常见数据结构及其底层,redis单线程读写效率高于多线程的理解,
数据结构·数据库·redis
sx2436944 小时前
day21:零基础学嵌入式之数据结构
数据结构