`

我的软考之路(七)——数据结构与算法(5)之查找

阅读更多

上篇博文我重点介绍了八大内部排序,这篇博文(数据结构与算法的最后一课)重点介绍查找,我们依旧沿用上篇博文的风格,先简单介绍,再以例子重点讲解。

下面我们开始今天的旅行,首先祝你旅行愉快,呵呵。

 

静态查找

 

若查找目的是为了查询某个特定的数据是否在表中或检索某个特定数据的各种属性,则此类查找表为静态查找表。

 

 

1、顺序查找

 

 

基本原理:从表一端开始逐个和关键字进行比较,若找到一个记录和给定值相等,则查找成功,反之失败。再简单点就是,一个一个的比大小,看看是否相等。

 

例子:

 

顺序查找更适合于顺序存储结构和链式存储结构的查找表。顺序查找需要一个个的去比较,效率很低。

 

2、折半查找(二分查找)

 

基本原理:1.把序列分成左中右三部分,左部分小于中间值,右部分大于中间值;

2.把给定值与中间值比较,确定下次查找是在左部分还是右部分;

3.继续上面两步操作,直到成功或失败。

 

注意:折半查找需要注意给定的序列必须是一个有序序列。

 

例子:

3、分块查找

 

基本原理:顺序查找和二分法查找的折中,先分块,在块中顺序查找。

 

注意:分成的各块内部数据可能无序;各块之间有序(第二个块中的元素都比第一个块中元素都大);建立了索引表,索引表按关键字有序。

 

例子:

 

静态查找表方法的性能分析

 

 

 

对于动态查找的插入和删除不是特别好讲,我们就不在这里讲了,只是简单的介绍一下什么是二叉排序树和平衡二叉树,B_树只做了解。

 

动态查找

 

若再查找的过程中同时插入查找表中不存在的数据,或从查找表中删除已存在的某个数据,则称此类查找表为动态查找表。

 

1、二叉排序树

 

定义:1.若它的左子树非空,则左子树上所有的结点的值均小于根结点的值;

2.若它的右子树非空,则右子树上所有的结点的值均大于根结点的值;

3.左右子树本身就是两棵二叉排序树。

例子:

定义看上去不是特别好理解,其实特别简单,我们再以例子简单的说一下。左子树的所有节点:3,1,6,4,7,都小于父节点8,右子树所有节点:10,14,13,都大于父节点。什么时候都是父节点大于左孩子,小于右孩子例如:8>3,8<10;3>1,3<6。

 

2、平衡二叉树

 

 

定义:1.它或者是一棵空树

2.或者树中任一结点的左右子树深度相差不超过1。

注意:从定义我们可得到:想要一颗树平衡,有三种情况,节点的平衡度要么为了0,要么为1,要么为-1。(平衡度:节点左子树的高度减去其右子树的高度。)

例子:

上面图在每个节点上标出了平衡度,所有的节点的平衡度的绝对值都小于等于0或1,所以它是一棵平衡二叉树。

 

总结

 

数据结构和算法的内容到今天(5月16日)就算结束了(祝旅行愉快),由于距离考试很近了,我们后面的博文就开始介绍软考的大题部分的内容,近期就会推出,敬请期待。

 

后续博客的更新列表,敬请期待。

 

我的软考之路(一)——开篇已更新

我的软考之路(二)——J2SE宏观总结已更新

我的软考之路(三)——数据结构与算法(1)之线性表已更新

我的软考之路(四)——数据结构与算法(2)之树与二叉树已更新

我的软考之路(五)——数据结构与算法(3)之图已更新

我的软考之路(六)——数据结构与算法(4)之八大排序已更新

我的软考之路(七)——数据结构与算法(5)之查找已更新

 

分享到:
评论

相关推荐

    软考辅导-数据结构与算法(“结点”文档)共134张.pptx

    "软考辅导-数据结构与算法(“结点”文档)共134张.pptx" 本资源摘要信息是关于数据结构与算法的知识点总结,涵盖了数据结构的概念、逻辑结构、存储结构、常用数据结构、算法基础、排序算法、查找算法、数值计算、...

    软考程序员历年真题2004上——2009下

    3. **数据结构与算法**:链表、栈、队列、树、图等基本数据结构的理解和应用,以及排序、查找等常见算法的实现与分析。 4. **操作系统**:进程管理、内存管理、文件系统、I/O操作等操作系统核心概念的掌握。 5. **...

    软考——程序员考试真题

    2. **算法与数据结构**:在真题中,常见的算法题型有排序、查找、图论、动态规划等。考生应熟悉基本算法的实现,例如快速排序、二分查找,以及链表、树、图等数据结构的运用。 3. **软件工程**:软件开发过程中的...

    软考中级 软件设计师考试上午下午同步辅导教材

    2. 数据结构与算法:如线性表、树形结构、图论算法、排序与查找算法等。 3. 计算机网络:TCP/IP协议、网络层次结构、网络安全与管理等。 4. 法律法规:涉及知识产权法、合同法、信息安全法规等。 5. 信息系统设计与...

    软考与答案

    2. **数据结构与算法**:数据结构是软件设计的基础,包括数组、链表、栈、队列、树、图等,而算法则是解决问题的关键,如排序算法、查找算法等。 3. **操作系统**:涵盖进程管理、内存管理、文件系统、设备管理等...

    软考\软件设计师辅导FLASH

    2. **数据结构与算法**:这是软考中的重点,考生需要熟练掌握数组、链表、栈、队列、树(二叉树、堆)、图等基本数据结构,并能设计和分析算法的效率,如排序和查找算法。 3. **计算机网络**:涉及到TCP/IP协议、...

    软考中级soft

    “数据结构与算法”是编程的基础,考生需要熟练运用数组、链表、树、图等各种数据结构,并掌握排序、查找等常用算法,这对于解决实际问题至关重要。 “软件工程”部分则涉及到软件开发的全过程,包括需求分析、设计...

    软考初级程序员模拟题

    2. **算法与数据结构**:掌握基本的排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序等)和查找算法(如线性查找、二分查找等),以及链表、栈、队列、树和图等数据结构的概念和操作。 3. **计算机...

    软考初级程序员考试练习题

    3. **算法与数据结构**:这部分要求考生能理解并运用基本的排序和查找算法,了解数组、链表、栈、队列、树等常见数据结构的特性及操作。 4. **软件工程基础**:学习软件开发过程,包括需求分析、设计、编码、测试和...

    软件设计师软考笔记.zip

    2. **数据结构与算法**:讲解了各种常用的数据结构(如数组、链表、树、图等)及其操作,以及常见算法(排序、查找等),这些都是软件设计的基础。 3. **操作系统原理**:深入解析进程管理、内存管理、文件系统等,...

    希赛——软件设计师考试笔记

    在提供的文件内容中,我们可以看到考试笔记包含了多个考点的知识点,例如线性表、树与二叉树、数据结构与算法基础、排序算法、查找算法以及编译原理等。以下是对这些考点的详细解读: ### 线性表 线性表是最基本、...

    软件设计师考试考点分析与真题详解(第4版)最新版

    《软件设计师考试考点分析与真题详解(第4版)最新版》是一本针对中级软考——软件设计师资格认证考试的辅导书籍。其内容主要涵盖数据结构与算法设计的基础知识、常用数据结构和算法的定义、存储、操作以及算法设计...

    软考2007下半年软件设计师下午试题分析与解答

    3. 数据结构与算法:理解基本数据结构如数组、链表、树、图,掌握排序和查找算法,例如冒泡排序、快速排序、二分查找等。 4. 系统架构设计:学习模块划分、接口设计、系统架构风格,如三层架构、微服务架构等,并...

    软考系统架构设计师2009-2018年章节分类真题与答案解析.rar

    2. 数据结构与算法:讨论数据组织和处理的基本方法,包括排序、查找等算法。 3. 软件工程:介绍软件开发的生命周期、质量管理、项目管理等理论与实践。 4. 计算机网络:讲解TCP/IP协议、网络安全、网络设计等内容。 ...

    2008年软考程序员试题(含答案)

    【标题】"2008年软考程序员试题(含答案)"所涵盖的知识点主要集中在当年全国计算机技术与软件专业技术资格(水平)考试——程序员级别的考试内容上。这个标题表明了这是一份包含了实际考试题目及其对应解答的资料,...

    软考2007下半年软件设计师上午试题分析与解答

    2. **数据结构与算法**:这是软件设计的基础,可能会涉及到数组、链表、树、图等基本数据结构,以及排序、查找等常用算法。 3. **设计模式**:试题可能会要求考生识别和应用常见的设计模式,如工厂模式、单例模式、...

    历年软考程序员真题.zip

    《历年软考程序员真题.zip》是一个包含了历年全国计算机技术与软件专业技术资格(水平)考试——程序员级别的真题和模拟题目的压缩包。这个资源对于准备参加考试的考生来说是极其宝贵的,它可以帮助考生了解考试的...

    软考中级软件设计师历年真题.zip

    2. **数据结构与算法**:数据结构是编程的基础,包括数组、链表、栈、队列、树、图等。算法分析则涉及排序、查找等基本操作的效率评估,如冒泡排序、快速排序、二分查找等。 3. **计算机网络**:理解网络协议,如...

    2008年下半年全国软考软件设计师试题

    2. **数据结构与算法**:题目可能会涉及到数组、链表、栈、队列、树、图等基本数据结构,以及排序、查找等经典算法,如快速排序、归并排序、二分查找等。 3. **编程语言与编译原理**:可能会考察C/C++、Java或...

    软件设计师中级历年试题

    数据结构和算法是软件设计的基础,考生需要熟悉数组、链表、栈、队列、树、图等基本数据结构,以及排序、查找等常见算法。此外,对递归、动态规划等高级算法的掌握也是必不可少的。 操作系统部分,考生需要了解进程...

Global site tag (gtag.js) - Google Analytics