首页 > 其他 > 详细

数据结构——第七章 查找

时间:2018-01-27 20:44:21      阅读:234      评论:0      收藏:0      [点我收藏+]

查找的目的是从给定的同一类型的数据集合中,找出人们所需要的数据元素(或记录)/

基本术语:

记录(record)

关键字(keyword)

主关键字(Primarykey)

次关键字(Secondary Key)

查找表(Searching Table)

动态查找(Dynamic Searching)

静态查找(Static Searching)

内部排序(Internal Sorting)

外部排序(External Sorting)

稳定性(Stability)

 

1 静态查找

一、顺序查找

顺序查找是用待查找记录与查找表中的记录逐个比较,若找到相等记录,则查找成功,否则,查找失败。

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

折半查找的前提是表有序的而且是顺序存储

使用三个指针low mid和high。

 

二分查找的性能分析

为了分析二分查找的性能,可以用二叉树来描述二分查找的过程。

把当前查找区间的中点作为根节点,左子区和右子区间分别作为根的左子树和右子树,

左子区间和右子区间按类似的方法,由此得到的二叉树成为二分查找的判定树。

ASL是平均查找长度(或说平均比较次数)

技术分享图片

技术分享图片

 

 2 动态查找

在查找表中实施查找时,对于给定值key,若表中存在关键字段等于key的记录,则查找成功。

否则将带查找记录按规则插入查找表中。

下面我们介绍几种动态查找方法。

一、二叉排序树查找:前提是将查找表组织为一颗二叉排序树。

二叉排序树。它或是一颗空树,或是一颗具有如下特征的非空二叉树。

(1)若他的左子树非空,则左子树上所有结点的关键字均小于根节点的关键字。

(2)若他的右子树非空,则右子树上所有结点的关键字均大于等于根节点的关键字;

(3)左、右子树本身又都是一颗二叉排序树。

 

首先要构造二叉排序树,给定一组顺序。。然后开始构造。

二叉排序树的效率高于顺序但低于二分。

后来发明了平衡二叉树,效率高了一些。。

 

3 hash查找(其实可以看成是一种动态查找)

 介绍一种不通过大量无效的比较,就能直接找到待查关键字的位置的查找方法

基本术语:

1.hash方法:

在存放记录时,通过相同函数计算存储位置,并按此位置存放,这种方法成为hash方法。

2.hash函数:

指在hash方法中使用的函数。

3.hash表:

按hash方法构造出来的表称为hash表。

4.hash地址:

通过hash函数计算记录的存储位置,我们把这个存储位置称为Hash地址。

5.冲突:

不同记录的关键字经过Hash函数计算可能得到同一hash地址,即key1!=key2时,

H(key1)=H(key2)。这种现象叫做“冲突”。

 

对于hash方法需要讨论三个问题:

(1)装满因子

(2)对于给定的一个关键字集合,选择一个计算简单且地址分布比较均匀的Hash函数,避免或尽量减少冲突。

(3)拟订解决冲突的方案。

 

///待更新。。

 

数据结构——第七章 查找

原文:https://www.cnblogs.com/eret9616/p/8367042.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!