基本概念和术语

搜索表(Search Table):是由同一类型的数据元素(或记录)构成的集合。

关键字(Key):是数据元素中某个数据项的值,用它可以标识一个数据元素。若此关键字可以唯一地标识一个记录,则称此关键字为主关键字(Primary Key)。

搜索(Searching):就是根据给定的某个值,在搜索表中确定一个其关键字等于给定值的数据元素(或记录)。
    若表中存在这样的一个记录,则称搜索是成功的,此时搜索的结果给出整个记录的信息,或指示该记录在搜索表中的位置。
    若表中不存在关键字等于给定值的记录,则搜索不成功,此时搜索的结果可给一个“空”记录或-1标识记录不在搜索表中。

搜索表按照操作方式来分有两大类:静态搜索表和动态搜索表。
静态搜索表(Static Searching Table):只做搜索操作的查找表。
动态搜索表(Dynamic Searching Table):在搜索过程中同时插入搜索表中不存在的数据元素,或者从搜索表中删除已经存在的某个数据元素。比如,如果你需要对某个网站上亿的注册用户进行清理工作,注销一些非法用户,你就需要搜索到他们后进行删除,删除后其实整个搜索表也会发生变化。

为了提高搜索的效率,我们需要专门为搜索操作设置数据结构,这种面向搜索操作的数据结构称为搜索结构。
    从逻辑上来说,搜索所基于的数据结构是集合,集合中的记录之间没有本质关系。可是要想获得较高的搜索性能,我们就不能不改变数据元素之间的关系,在存储时可以将搜索集合组织成表、树等结构。
    例如,对于静态搜索表来说,我们不妨应用线性结构来组织数据,这样可以使用顺序搜索算法,如果再对主关键词排序,则可以应用二分搜索算法等技术进行高效的搜索。
    如果是需要动态搜索,则会复杂一些,可以考虑搜索二叉树。
    另外,还可以用散列表结构来解决一些搜索问题,这些技术都将在后面的讲解中说明。

算法基础知识科普:8大搜索算法之顺序搜索相关推荐

  1. 算法基础知识科普:8大搜索算法之二叉搜索树(下)

    由于微信发代码以及数学符号很吃力,所以我们做知识科普只能利用图片来做,本算法代码较多,所以分为三个部分来介绍.本篇把剩余的部分补齐.当然二叉搜索树也有自己的缺陷,即构造的二叉树跟数据的初始状态以及删除 ...

  2. 算法基础知识科普:8大搜索算法之红黑树(下)

    这是介绍红黑树的最后一部分,令y为要删除结点,n为要删除结点的子结点(子结点最多有1个),w为y的兄弟结点,删除操作的重点是使红黑树删除结点并通过调整后仍满足自身是搜索二叉树和设定的三点规则.删除操作 ...

  3. 算法基础知识科普:8大搜索算法之红黑树(上)

    平衡二叉树(AVL)是一种特殊的二叉搜索树(BST),即每个结点的值都大于其左子树且小于其右子树的值(若存在),并通过引入平衡因子的概念来保持树的平衡.平衡二叉树算法的重点是在插入.删除结点时,如何保 ...

  4. 算法基础知识科普:8大搜索算法之AVL树(下)

    昨天我们介绍了在进行结点插入时,若左子树深度超过右子树深度两层则进行右旋来保持平衡.今天继续介绍,若右子树深度超过左子树深度两层时的左旋操作,以及删除结点后平衡因子的变更问题. 这些都掌握后,基本上对 ...

  5. 算法基础知识科普:8大搜索算法之AVL树(中)

    昨天我们介绍了平衡二叉树的基本概念,通过平衡因子来控制左右子树的深度,使得整个二叉搜索树始终保持平衡状态.这个算法的核心在于当平衡因子超过范围,如何通过旋转的方式来使二叉搜索树保持平衡,以及平衡后对应 ...

  6. 算法基础知识科普:8大搜索算法之二叉搜索树(中)

    昨天图文介绍了二叉搜索树的基本概念,本篇图文介绍二叉搜索树的具体实现.既然二叉搜索树是二叉树的特殊应用,所以我们首先封装二叉树的结点,即数据-左子树-右子树,然后实现ISymbolTalbe接口中的方 ...

  7. 算法基础知识科普:8大搜索算法之二叉搜索树(上)

    前几天,我们介绍了在顺序存储结构上构建的搜索算法,如二分搜素,插补搜索等,这种结构适合于静态搜索,但对于动态搜索会涉及到大量记录的移动导致效率的降低.这样我们自然会想是否能够利用链式的存储结构,这样在 ...

  8. 算法基础知识科普:8大搜索算法之二分搜索

    昨天介绍了对无序搜素表的顺序搜索方法,今天介绍对有序搜索表的二分搜索方法,"二分"在算法设计中是非常常用的一种思想,除了处理如下普通的搜索外,还用于搜索方程的解等工程领域.但二分法 ...

  9. 算法基础知识科普:8大搜索算法之红黑树(中)

    红黑树也是一种特殊形式的二叉搜索树,通过结点的颜色以及三条规则来保证二叉搜索树的平衡.规则1:根结点的颜色是黑色,规则2:叶子结点到根结点路径上遇到的黑色结点数目相同,规则3:叶子结点到根结点路径上无 ...

最新文章

  1. Java并发编程-volatile
  2. [XA]转:一个关于结对编程(Pair Programming)的讲义
  3. 计算机应用基础教案本中职,计算机应用基础教案:计算机概述(中职教育)
  4. Oracle ROWNUM的陷阱
  5. Android应用程序管理系列(一)——管理对象封装概述
  6. Redis-数据结构与对象
  7. Photoshop 22.5 新功能:更多天空替换素材下载、弯曲变形与探索功能的强化
  8. 如何在 iPhone 和 iPad 上使用与你共享?
  9. Oracle 根据dbf文件的数据恢复
  10. MWORKS应用案例 | 基于Modelica的射流管式电液伺服阀的建模仿真
  11. 垃圾分类-特别是有害垃圾
  12. Win8.1 WP8: 蓝牙Rfcomm应用
  13. spark本地项目报错:Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
  14. Unity UI框架详细理解--场景管理
  15. adb: failed to install xxx Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]
  16. 全基因DNA甲基化检测“金标准”--- 改进版简化基因组甲基化测序
  17. Baumer profinet 接口编码器的简单调试
  18. 远程连接mysql2005_数据库2005链接远程
  19. 计算机二级考试地点没有容量,2017年计算机二级office考试点积累
  20. 【双系统安装】win10+联想thinkpad T14 安装Ubuntu20.04

热门文章

  1. Python在linux服务器上解压,python3传文件到linux服务器然后解压
  2. 约瑟夫环 猴子选大王
  3. 使用RabbitMQ做数据接收和处理时,自动关闭
  4. group by 查找订单的最新状态 join
  5. AIX5.3安装bash shell
  6. Enable PowerShell script execution policy
  7. C++:STL标准入门汇总
  8. 使用Docker-Docker for Web Developers(2)
  9. 让你提升命令行效率的 Bash 快捷键
  10. 数位dp(求1-n中数字1出现的个数)