算法基础知识科普:8大搜索算法之顺序搜索
基本概念和术语
搜索表(Search Table):是由同一类型的数据元素(或记录)构成的集合。
关键字(Key):是数据元素中某个数据项的值,用它可以标识一个数据元素。若此关键字可以唯一地标识一个记录,则称此关键字为主关键字(Primary Key)。
搜索(Searching):就是根据给定的某个值,在搜索表中确定一个其关键字等于给定值的数据元素(或记录)。
若表中存在这样的一个记录,则称搜索是成功的,此时搜索的结果给出整个记录的信息,或指示该记录在搜索表中的位置。
若表中不存在关键字等于给定值的记录,则搜索不成功,此时搜索的结果可给一个“空”记录或-1标识记录不在搜索表中。
搜索表按照操作方式来分有两大类:静态搜索表和动态搜索表。
静态搜索表(Static Searching Table):只做搜索操作的查找表。
动态搜索表(Dynamic Searching Table):在搜索过程中同时插入搜索表中不存在的数据元素,或者从搜索表中删除已经存在的某个数据元素。比如,如果你需要对某个网站上亿的注册用户进行清理工作,注销一些非法用户,你就需要搜索到他们后进行删除,删除后其实整个搜索表也会发生变化。
为了提高搜索的效率,我们需要专门为搜索操作设置数据结构,这种面向搜索操作的数据结构称为搜索结构。
从逻辑上来说,搜索所基于的数据结构是集合,集合中的记录之间没有本质关系。可是要想获得较高的搜索性能,我们就不能不改变数据元素之间的关系,在存储时可以将搜索集合组织成表、树等结构。
例如,对于静态搜索表来说,我们不妨应用线性结构来组织数据,这样可以使用顺序搜索算法,如果再对主关键词排序,则可以应用二分搜索算法等技术进行高效的搜索。
如果是需要动态搜索,则会复杂一些,可以考虑搜索二叉树。
另外,还可以用散列表结构来解决一些搜索问题,这些技术都将在后面的讲解中说明。
相关文章:

foj2024
为什么80%的码农都做不了架构师?>>> 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年新年快乐!
中华民族传统历法夏历(农历)采用的是干支纪年法,是世界上最古老的历法之一。干支即“六十甲子”,以60年为一循环。它的纪元开始相传可追溯到黄帝轩辕氏时代,按公元计算,第一个“甲子年”应是在公元前2697年…

Win10系列:JavaScript访问文件和文件夹
在实际开发中经常会遇到访问文件的情况,因此学习与文件有关的操作对程序开发很有帮助,关于文件操作的一些基本技术,在前面章节中有专门基于C#语言的详细讲解,本节主要介绍如何使用HTML5和JavaScript开发具有文件操作功能的Windows…
算法基础知识科普:8大搜索算法之二分搜索
昨天介绍了对无序搜素表的顺序搜索方法,今天介绍对有序搜索表的二分搜索方法,“二分”在算法设计中是非常常用的一种思想,除了处理如下普通的搜索外,还用于搜索方程的解等工程领域。但二分法仍然有缺陷,待后面慢慢介绍…

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

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

[转载]李开复先生给中国学生的第四封信:大学四年应是这样度过
今天,我回复了“开复学生网”开通以来的第1000个问题。关掉电脑后,始终有一封学生来信萦绕在我的脑海里,挥之不去: 开复老师: 就要毕业了。 回头看自己所谓的大学生活, 我想哭,不是因为离别&…
算法基础知识科普:8大搜索算法之插补搜索
二分法的不足在于,对于均匀分布的数据,缩小搜索范围的速度太慢,每次只能缩小原长度的1/2,我们希望缩小范围尽可能的快,即搜索的数据若离左端点近,搜索的区间尽量的靠近左端点,同理搜索的数据若离…

hdu(1596)
为什么80%的码农都做不了架构师?>>> 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)
数据访问:使用 ADO.NET 的最佳实践(ADO.NET 技术文档) 发布日期: 4/1/2004| 更新日期: 4/1/2004 摘要:编写 Microsoft ADO.NET 代码的最佳实践,以及对使用 ADO.NET 中可用对象的开发人员的建议。…
算法基础知识科普:8大搜索算法之二叉搜索树(上)
前几天,我们介绍了在顺序存储结构上构建的搜索算法,如二分搜素,插补搜索等,这种结构适合于静态搜索,但对于动态搜索会涉及到大量记录的移动导致效率的降低。这样我们自然会想是否能够利用链式的存储结构,这…

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

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

利用Event和MapFile进程共享信息
工作过程: 进程一, 建立映射文件,填写数据,并发出Event的信号; 进程二,打开映射文件,收到Event的信号时读取数据. #include <windows.h>#include <string.h>#include <iostream>usingnamespacestd; #defineFILE_SIZE 1024staticHANDLE hMapFile; staticLPVOI…
算法基础知识科普:8大搜索算法之二叉搜索树(中)
昨天图文介绍了二叉搜索树的基本概念,本篇图文介绍二叉搜索树的具体实现。既然二叉搜索树是二叉树的特殊应用,所以我们首先封装二叉树的结点,即数据-左子树-右子树,然后实现ISymbolTalbe接口中的方法,我们知道二叉搜索…

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

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

各种播放器代码
各种播放器代码1.avi格式代码片断如下:<object id"video"width"400"height"200"border"0"classid"clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"><param name"ShowDisplay"value"0"…
算法基础知识科普:8大搜索算法之二叉搜索树(下)
由于微信发代码以及数学符号很吃力,所以我们做知识科普只能利用图片来做,本算法代码较多,所以分为三个部分来介绍。本篇把剩余的部分补齐。当然二叉搜索树也有自己的缺陷,即构造的二叉树跟数据的初始状态以及删除的方法有很大的关…

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

JAVA增删改查XML文件
2019独角兽企业重金招聘Python工程师标准>>> 最近总是需要进行xml的相关操作。 不免的要进行xml的读取修改等,于是上网搜索,加上自己的小改动,整合了下xml的常用操作。 读取XML配置文件 首先我们需要通过DocumentBuilderFactory获…
测试一下,你能小学毕业吗?
昨天在群里大家讨论了上面那道小学六年级的五星题,不知道有没有同学能够不用三角函数,不用积分做出来的?先别往后看,测试一下吧!看看是不是要跟小编一起重新背起小书包返回小学,重新学习了。 现在小学生的…

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 (…
缓存穿透、并发和失效的解决方案
我们在用缓存的时候,不管是Redis或者Memcached,基本上会通用遇到以下三个问题: 缓存穿透 缓存并发 缓存失效 缓存穿透 注:上面三个图会有什么问题呢? 我们在项目中使用缓存通常都是先检查缓存中是否存在,…

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树(上)
前段时间介绍了二叉搜索树(BST),我们知道这种搜索结构存在的弊端是对输入序列存在强依赖,若输入序列基本有序,则BST近似退化为链表。这样就会大大降低搜索的效率。AVL树以及Red-Black树就是为了解决这个问题࿰…

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

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

java sqlite使用小记
2019独角兽企业重金招聘Python工程师标准>>> Sqlite教程: http://www.runoob.com/sqlite/sqlite-tutorial.html 加载sqlite jdbc驱动: static{ try { Class.forName("org.sqlite.JDBC"); } catch (ClassNotFoundException e) { e.p…
算法基础知识科普:8大搜索算法之AVL树(中)
昨天我们介绍了平衡二叉树的基本概念,通过平衡因子来控制左右子树的深度,使得整个二叉搜索树始终保持平衡状态。这个算法的核心在于当平衡因子超过范围,如何通过旋转的方式来使二叉搜索树保持平衡,以及平衡后对应结点平衡因子如何…