您的位置:首页 > 理论基础 > 数据结构算法

数据结构实践项目——查找(一)

2015-11-23 15:08 337 查看
本文是[数据结构基础系列(8):查找]课程的第一组实践项目。

本文针对:

0801 查找问题导学

0802 线性表的顺序查找

0803 线性表的折半查找

0804 索引存储结构

0805 分块查找

0806 二叉排序树

0807 二叉排序树(续)

0808 平衡二叉树

纸上谈兵:“知原理”检验题目

[参考(部分)] [参考(1)]

1、对于A[0..10]有序表{12,18,24,35,47,50,62,83,90,115,134}

(1)用二分查找法查找 90时,需进行多少次查找可确定成功?

(2)当查找47时需进行多少次查找可确定成功?

(3)查找100时,需进行多少次查找才能确定不成功?

(4)求成功和不成功时的平均查找长度。

(5)构造对于这个序列的判定树,并再求成功和不成功时的平均查找长度。

2、现给出一个分块有序的数据表,每块中元素的个数s=8,其中的数据有:

22,4,23,11,20,2,15,13,30,45,26,34,29,35,26,36,55,98,56,74,61,90,80,96,127,158,116,114,128,113,115,102,184,211,243,188,187,218,195,210,279,307,492,452,408,361,421,399,856,523,704,703,697,535,534,739

(1)构造索引表,并画出索引存储结构;

(2)请描述查找61的过程,需要多少次比较;

(3)请描述查找739的过程,需要多少次比较;

(4)请描述查找200的过程,经过多少次比较后才能确定找不到。

3、将整数序列{43,52,75,24,10,38,67,55,63,60}中的数依次插入到一棵空的二叉排序树中,构造出相应的二叉排序树,要求用图形给出构造过程。

4、将整数序列{43,52,75,24,10,38,67,55,63,60}依次插入到一棵空的平衡二叉树中,试构造相应的平衡二叉树,要求用图形给出构造过程。

上机实践

【项目1 - 验证算法】

运行并本周视频中所讲过的算法,观察结果并领会算法。

1、认真阅读并验证折半查找算法。请用有序表{12,18,24,35,47,50,62,83,90,115,134}作为测试序列,分别对查找90、47、100进行测试。

[参考解答]

2、认真阅读并验证分块查找算法。请用22,4,23,11,20,2,15,13,30,45,26,34,29,35,26,36,55,98,56, 74,61,90,80,96,127,158,116,114,128,113,115,102,184,211,243,188,187,218,195,210,279,307,492,452,408,361,421,399,856,523,704,703,697,535,534,739(共n=56个数据,每块数据个数s=8)作为数据表,自行构造索引表,分别对查找61、739、200进行测试。

[参考解答]

3、认真阅读并验证二叉排序树相关算法。

(1)由整数序列{43,52,75,24,10,38,67,55,63,60}构造二叉排序树;

(2)输出用括号法表示的二叉排序树;

(3)用递归算法和非递归算法查找关键字55;

(4)分别删除43和55,输出删除后用括号法表示的二叉排序树。

[参考解答]

4、认真阅读并验证平衡二叉树相关算法。

(1)由整数序列{43,52,75,24,10,38,67,55,63,60}构造AVL树;

(2)输出用括号法表示的AVL树;

(3)查找关键字55;

(4)分别删除43和55,输出删除后用括号法表示的二叉排序树。

[参考解答]

【项目2 - 二叉树排序树中查找的路径】

设计一个算法,输出在二叉排序中查找时查找某个关键字经过的路径。

[参考解答]

【项目3 - 是否二叉排序树?】

设计一个算法,判断给定的二叉树是否是二叉排序树。

[参考解答]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息