查找排序习题讲解

发布 2021-05-14 04:54:28 阅读 4493

【例7-1】有序表按关键字排列如下:7,14,18,21,23,29,31,35,38,42,46,49,52,在表中查找关键字为14和22的数据元素,并画出折半查找过程的判定树。

解:折半查找的过程描述如下:

low=1;high=length设置初始区间

当low>high时,返回查找失败信息表空,查找失败

low≤high,mid=(low+high)/2取中点

a. 若kx《转② /查找在左半区进行

b. 若kx>转② /查找在右半区进行。

c. 若kx=返回数据元素在表中位置 //查找成功。

查找关键字为14的过程如下:

low=1设置初始区间high=13

表空测试,非空;

mid=7 ③得到中点,比较测试为a情形。

low=1high=6 high=mid-1,调整到左半区。

表空测试,非空;

mid=3得到中点,比较测试为a情形。

low=1 high=2high=mid-1,调整到左半区。

表空测试,非空;

mid=1得到中点,比较测试为b情形。

low=2 high=2low=mid+1,调整到右半区。

表空测试,非空;

mid=2得到中点,比较测试为c情形。

查找成功,返回找到的数据元素位置为2

查找关键字为22的过程如下:

low=1设置初始区间high=13

表空测试,非空;

mid=7 ③得到中点,比较测试为a情形。

low=1high=6 high=mid-1,调整到左半区。

表空测试,非空;

mid=3得到中点,比较测试为b情形。

low=4 high=6 low=mid+1,调整到右半区。

表空测试,非空;

mid=5得到中点,比较测试为a情形。

low=4 high=4high=mid-1,调整到左半区。

表空测试,非空;

mid=4得到中点,比较测试为b情形。

high=4 low=5low=mid+1,调整到右半区。

表空测试,为空;查找失败,返回查找失败信息为0

查找过程的判定树如图7-1所示。

例7-2】记录的关键字序列为:63,90,70,55,67,42,98,83,10,45,58,则画出构造一棵二叉排序树的过程。

解:构造二叉排序树的过程如图7-2所示。

例7-3】关键字集为(47,7,29,11,16,92,22,8,3),哈希表表长为11。h(key)= key mod 11,用线性探测法处理冲突。

解:建表如下:

分析均是由哈希函数得到的没有冲突的哈希地址而直接存入的。

h(29)= 7,哈希地址上冲突,需寻找下一个空的哈希地址:

由hi =(h(29)+1) mod 11 = 8 ,哈希地址8为空,将29存入。另外同样在哈希地址上有冲突,也是由hi找到空的哈希地址的。

而h(3)= 3,哈希地址上冲突,由:h1=(h(3)+1)mod 11 = 4,仍然冲突。

h2=(h(3)+2)mod 11 = 5,仍然冲突。h3=(h(3)+3)mod 11 = 6,找到空的哈希地址,存入。

例7-5】设有一组关键字(19,01,23,14,55,20,84,27,68,11,10,77),采用哈希函数:h(key)= key % 13,若用开放定址法的线性探测法解决冲突,试在0~13的哈希地址空间中对该关键字序列构造哈希表并求其成功查找时的asl。

解:依题意,m=13,线性探测法的下一个地址计算公式为:

di = h(key)

di+1 = di+1)% m ;i=1,2,…

其计算函数如下:

h(19)= 19 % 13 = 6

h(01)= 01 % 13 = 1

h(23)= 23 % 13 = 10

h(14)= 14 % 13 = 1 (冲突)

h(14)=(1+1)% 14 = 2

h(55)= 55 % 13 = 3

h(20)= 20 % 13 = 7

h(84)= 84 % 13 = 6 (冲突)

h(84)=(6+1)% 14 = 7 (仍冲突)

h(84)=(7+1)% 14 = 8

h(27)= 27 % 13 = 1 (冲突)

h(27)=(1+1)% 14 = 2 (仍冲突)

h(27)=(2+1)% 14 = 3 (仍冲突)

h(27)=(3+1)% 14 = 4

h(68)= 68 % 13 = 3 (冲突)

h(68)=(3+1)% 14 = 4 (仍冲突)

h(68)=(4+1)% 14 = 5

h(11)= 11 % 13 = 11

h(10)= 10 % 13 = 10 (冲突)

h(10)=(10+1)% 14 = 11 (仍冲突)

h(10)=(11+1)% 14 = 12

h(77)= 77 % 13 = 12 (冲突)

h(77)=(12+1)% 14 = 13

哈希表如下:

共有12个关键字,等概率查找,则成功查找时。

asl=(1+2+1+4+3+1+1+3+1+1+3+2)/12=23/12≈1.9

习题7一、单项选择题。

1. 若查找每个元素的概率相等,则在长度为n的顺序表上查找任一元素的平均查找长度为( )

a. nb. n+1c. (n-1)/2 d. (n+1)/2

2. 对于长度为9的顺序存储的有序表,若采用折半查找,在等概率情况下的平均查找长度为( )的9分之一。

a. 20b. 18c. 25d. 22

3. 对于长度为18的顺序存储的有序表,若采用折半查找,则查找第15个元素的比较次数为( )

a. 3b. 4c. 5d. 6

4. 对于顺序存储的有序表(5,12,20,26,37,42,46,50,64),若采用折半查找,则查找元素26的比较次数为( )

查找练习题答案

查找。一 选择题。1.对n个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为 a n 1 2 b.n 2 c.n d.1 n n 2 2.下面关于二分查找的叙述正确的是 a.表必须有序,表可以顺序方式存储,也可以链表方式存储 c.表必须有序,而且只能从小到大排列。b.表必须有序且表中...

三年级句子排序讲解

1 巧排句序。三年级句子排序讲解。综合各句的意思 想想这句话主要说的是什么内容。想想全段的内容是按什么顺序排列的 即找出排列顺序的依据。第一招 按事情发展的顺序排列。第二招 按时间先后顺序排列。第三招 按空间推移的顺序排列。第四招 按先总述后分述的顺序排列。按确定的顺序排列。按排好的顺序仔细读几遍 ...

三年级句子排序讲解

整理句子的顺序。1 巧排句序。这要求将一些顺序混乱的句子,按正确的顺序重新排列,整理成一段通顺连贯的话,以准确表达作者的写作思路和意图。做这类练习,可以按以下五个步骤进行 仔细阅读每句话或每组句子,理解它们的主要内容。综合各句的意思,想想这句话主要说的是什么内容。想想全段的内容是按什么顺序排列的,即...