当前位置: 首页 > 编程日记 > 正文

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

基本概念和术语

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

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

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

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

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

这里写图片描述

相关文章:

foj2024

为什么80%的码农都做不了架构师&#xff1f;>>> http://acm.fzu.edu.cn/problem.php?pid2024 View Code #include < stdio.h > #include < string .h > #define M 1010 int c[M][M]; int f[M][M]; int min( int a, int b, int c){ int z …

4701年新年快乐!

中华民族传统历法夏历&#xff08;农历&#xff09;采用的是干支纪年法&#xff0c;是世界上最古老的历法之一。干支即“六十甲子”&#xff0c;以60年为一循环。它的纪元开始相传可追溯到黄帝轩辕氏时代&#xff0c;按公元计算&#xff0c;第一个“甲子年”应是在公元前2697年…

Win10系列:JavaScript访问文件和文件夹

在实际开发中经常会遇到访问文件的情况&#xff0c;因此学习与文件有关的操作对程序开发很有帮助&#xff0c;关于文件操作的一些基本技术&#xff0c;在前面章节中有专门基于C#语言的详细讲解&#xff0c;本节主要介绍如何使用HTML5和JavaScript开发具有文件操作功能的Windows…

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

昨天介绍了对无序搜素表的顺序搜索方法&#xff0c;今天介绍对有序搜索表的二分搜索方法&#xff0c;“二分”在算法设计中是非常常用的一种思想&#xff0c;除了处理如下普通的搜索外&#xff0c;还用于搜索方程的解等工程领域。但二分法仍然有缺陷&#xff0c;待后面慢慢介绍…

linux之shell脚本学习篇一

为什么80%的码农都做不了架构师&#xff1f;>>> 此文包含脚本服务请求&#xff0c;字符串截取&#xff0c;文件读写内容&#xff0c;打印内容换行。 #!/bin/bash retMsg""; while read LINE do echo "this is text: $LINE"; retMsg/usr/bin/cu…

Win10系列:JavaScript动画2

"重新定位"动画也是Windows动画库中的动画效果。"重新定位"动画的动画效果是指一个或一组元素移动到新的位置时&#xff0c;这些元素不是突然出现在新的位置&#xff0c;而是从一个位置移动到另一个位置。 创建"重新定位"动画可以使用WinJS.UI.A…

[转载]李开复先生给中国学生的第四封信:大学四年应是这样度过

今天&#xff0c;我回复了“开复学生网”开通以来的第1000个问题。关掉电脑后&#xff0c;始终有一封学生来信萦绕在我的脑海里&#xff0c;挥之不去&#xff1a; 开复老师&#xff1a; 就要毕业了。 回头看自己所谓的大学生活&#xff0c; 我想哭&#xff0c;不是因为离别&…

算法基础知识科普:8大搜索算法之插补搜索

二分法的不足在于&#xff0c;对于均匀分布的数据&#xff0c;缩小搜索范围的速度太慢&#xff0c;每次只能缩小原长度的1/2&#xff0c;我们希望缩小范围尽可能的快&#xff0c;即搜索的数据若离左端点近&#xff0c;搜索的区间尽量的靠近左端点&#xff0c;同理搜索的数据若离…

hdu(1596)

为什么80%的码农都做不了架构师&#xff1f;>>> dijkstra 1 #include " iostream " 2 using namespace std; 3 double map[ 1010 ][ 1010 ]; 4 int visit[ 1010 ]; 5 double used[ 1010 ]; 6 int k; 7 double _max 0 ; 8 int i…

使用ADO.NET 的最佳实践(zz)

数据访问&#xff1a;使用 ADO.NET 的最佳实践&#xff08;ADO.NET 技术文档&#xff09; 发布日期&#xff1a; 4/1/2004| 更新日期&#xff1a; 4/1/2004 摘要&#xff1a;编写 Microsoft ADO.NET 代码的最佳实践&#xff0c;以及对使用 ADO.NET 中可用对象的开发人员的建议。…

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

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

如何查看 oracle 官方文档

Concept 包含了 oracle 数据库里面的一些基本概念和原理, 比如 数据库逻辑结构, 物理结构, 实例结构, 优化器, 事务等. PDF 460页 Reference 包含了动态性能视图, 数据字典, 初始化参数等, 如果有参数不知道意思, 或者 v$视图字段信息模糊, 都可以从这里找到描述, 使用 html版的…

php开发面试题---攻击网站的常用手段有哪些,及如何预防(整理)

php开发面试题---攻击网站的常用手段有哪些&#xff0c;及如何预防&#xff08;整理&#xff09; 一、总结 一句话总结&#xff1a; 比较记忆&#xff1a;注意比较各种攻击的区别&#xff0c;比如csrf和xss&#xff0c;以及xss和sql&#xff0c;这样才能记住 1、Sql注入是什么&…

利用Event和MapFile进程共享信息

工作过程: 进程一, 建立映射文件,填写数据,并发出Event的信号; 进程二,打开映射文件,收到Event的信号时读取数据. #include <windows.h>#include <string.h>#include <iostream>usingnamespacestd; #defineFILE_SIZE 1024staticHANDLE hMapFile; staticLPVOI…

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

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

PropertiesFactoryBean PropertyPlaceholderConfigurer 区别

为什么80%的码农都做不了架构师&#xff1f;>>> 1.PropertiesFactoryBean is a FactoryBean implementation which reads a properties file and exposes that as an Properties object in the applicationcontext. 加载配置文件后&#xff0c;可以在代码中通过注…

MySQL索引背后的数据结构及算法原理【转】

http://blog.codinglabs.org/articles/theory-of-mysql-index.htmlMySQL索引背后的数据结构及算法原理【转】摘要本文以MySQL数据库为研究对象&#xff0c;讨论与数据库索引相关的一些话题。特别需要说明的是&#xff0c;MySQL支持诸多存储引擎&#xff0c;而各种存储引擎对索引…

各种播放器代码

各种播放器代码1.avi格式代码片断如下&#xff1a;<object id"video"width"400"height"200"border"0"classid"clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"><param name"ShowDisplay"value"0"…

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

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

SpringMvc4中获取request、response对象的方法

springMVC4中获取request和response对象有以下两种简单易用的方法&#xff1a; 1、在control层获取 在control层中获取HttpServletRequest和HttpServletResponse对象有以下两种简单方式&#xff1a; 1&#xff09;通过方法参数直接在action类中获取 Controller class Action{ R…

JAVA增删改查XML文件

2019独角兽企业重金招聘Python工程师标准>>> 最近总是需要进行xml的相关操作。 不免的要进行xml的读取修改等&#xff0c;于是上网搜索&#xff0c;加上自己的小改动&#xff0c;整合了下xml的常用操作。 读取XML配置文件 首先我们需要通过DocumentBuilderFactory获…

测试一下,你能小学毕业吗?

昨天在群里大家讨论了上面那道小学六年级的五星题&#xff0c;不知道有没有同学能够不用三角函数&#xff0c;不用积分做出来的&#xff1f;先别往后看&#xff0c;测试一下吧&#xff01;看看是不是要跟小编一起重新背起小书包返回小学&#xff0c;重新学习了。 现在小学生的…

This is A PostXing Test

Test 一下下 试看看~~~ ABC试一下代码...1 public class PostApplicationExitActivationProcess2 {3 /// <summary>4 /// The main entry point for the application.5 /// </summary>6 [STAThread]7 static void Main( string[] args) 8 {9 if (…

缓存穿透、并发和失效的解决方案

我们在用缓存的时候&#xff0c;不管是Redis或者Memcached&#xff0c;基本上会通用遇到以下三个问题&#xff1a; 缓存穿透 缓存并发 缓存失效 缓存穿透 注&#xff1a;上面三个图会有什么问题呢&#xff1f; 我们在项目中使用缓存通常都是先检查缓存中是否存在&#xff0c;…

CentOS 7 命令

Centos 7 目录说明 / / 是根目录。 /bin 软连接到 /usr/bin。可以理解/bin 是 /usr/bin 的快捷方式。 /lib 软连接到 /usr/lib。 /lib64 软连接到 /usr/lib64。 /sbin 软连接到 /usr/sbin。 /usr软件安装位置 /usr/bin 为系统命令所在目录。 /usr/local 为安装程序所在目录。 /…

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

前段时间介绍了二叉搜索树&#xff08;BST&#xff09;&#xff0c;我们知道这种搜索结构存在的弊端是对输入序列存在强依赖&#xff0c;若输入序列基本有序&#xff0c;则BST近似退化为链表。这样就会大大降低搜索的效率。AVL树以及Red-Black树就是为了解决这个问题&#xff0…

GARFIELD@04-09-2005

a technical facto 转载于:https://www.cnblogs.com/rexhost/archive/2005/04/09/134701.html

Vue.js学习系列(四十二)-- Vue.js组件

2019独角兽企业重金招聘Python工程师标准>>> 组件&#xff08;Component&#xff09;是Vue.js最强大的功能之一。组件可以扩展HTML元素&#xff0c;封装可重用的代码。组件系统让我们可以用独立可复用的小组件来构建大型应用&#xff0c;几乎任 意类型的应用的界面都…

java sqlite使用小记

2019独角兽企业重金招聘Python工程师标准>>> Sqlite教程&#xff1a; http://www.runoob.com/sqlite/sqlite-tutorial.html 加载sqlite jdbc驱动&#xff1a; static{ try { Class.forName("org.sqlite.JDBC"); } catch (ClassNotFoundException e) { e.p…

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

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