数据结构与算法(5)查找

静态查找

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

一、顺序查找

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

例子:索引

         

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

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

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

              2. 把给定值与中间值比较,肯定下次查找是在左部分仍是右部分;原理

              3. 继续上面两步操做,直到成功或失败。二叉树

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

例子:im

                      

三、分块查找

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

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

例子:

                   

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

                  

动态查找

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

一、二叉排序树

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

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

        3. 左右子树自己就是两棵二叉排序树。

例子:

                              

二、平衡二叉树

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

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

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

例子:

                      

相关文章
相关标签/搜索