分享

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

 老马的程序人生 2020-08-17

基本概念和术语

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

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

搜索(Searching):就是根据给定的某个值,在搜索表中确定一个其关键字等于给定值的数据元素(或记录)。

若表中存在这样的一个记录,则称搜索是成功的,此时搜索的结果给出整个记录的信息,或指示该记录在搜索表中的位置。

若表中不存在关键字等于给定值的记录,则搜索不成功,此时搜索的结果可给一个“空”记录或-1标识记录不在搜索表中。

搜索表按照操作方式来分有两大类:静态搜索表和动态搜索表。

静态搜索表(Static Searching Table):只做搜索操作的查找表。

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

为了提高搜索的效率,我们需要专门为搜索操作设置数据结构,这种面向搜索操作的数据结构称为搜索结构

从逻辑上来说,搜索所基于的数据结构是集合,集合中的记录之间没有本质关系。可是要想获得较高的搜索性能,我们就不能不改变数据元素之间的关系,在存储时可以将搜索集合组织成表、树等结构。

例如,对于静态搜索表来说,我们不妨应用线性结构来组织数据,这样可以使用顺序搜索算法,如果再对主关键词排序,则可以应用二分搜索算法等技术进行高效的搜索。

如果是需要动态搜索,则会复杂一些,可以考虑搜索二叉树。

另外,还可以用散列表结构来解决一些搜索问题,这些技术都将在后面的讲解中说明。



华北电力大学数理系LSGO软件技术团队成立于2010年09月25日,团队主要以机器学习地理信息系统为主要研究方向,成立几年来为学校培养了大量优秀人才,他们或者就职于IBM、阿里巴巴、网易游戏、百度等IT企业,或者就读于中科院信安所、中科院计算所、中科院自动化所、中国科技大学、北京理工大学、武汉大学、华南理工大学、哈尔滨工业大学、华北电力大学等著名高校。

今年(2016年07月)毕业的李文乔同学保送到北京理工大学,安晟同学继续在华北电力大学读研究生,期间华硕公司,小米公司也希望团队推荐学生就业,综上,来LSGO软件技术团队学习可作为驻保高校学生,提升自己学术以及技术水平的一个不错选择。

如果对我们感兴趣,可以与我联系,通过考核后即可成为我们的一员。

请阅读以下代码(C#),得到联系方式:

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多