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

简介: 本文是[数据结构基础系列(8):查找]课程的第一组实践项目。本文针对: 0801 查找问题导学 0802 线性表的顺序查找 0803 线性表的折半查找 0804 索引存储结构 0805 分块查找 0806 二叉排序树 0807 二叉排序树(续) 0808 平衡二叉树纸上谈兵:“知原理”检验题目[参考(部分)] [参考(1)] 1、对于A[0.

本文是[数据结构基础系列(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 - 是否二叉排序树?】
设计一个算法,判断给定的二叉树是否是二叉排序树。
[参考解答]

目录
相关文章
|
2月前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
88 4
|
2月前
|
存储
探索数据结构:单链表的实践和应用
探索数据结构:单链表的实践和应用
|
7月前
|
存储
【数据结构】----顺序表项目-通讯录
【数据结构】----顺序表项目-通讯录
30 0
|
7月前
|
机器学习/深度学习 算法
数据结构小实践
【4月更文挑战第13天】数据结构小实践
61 1
|
7月前
|
Web App开发 存储 网络协议
C/C++ 数据结构设计与应用(四):C++数据压缩与传输:从理论到实践的全景解析
C/C++ 数据结构设计与应用(四):C++数据压缩与传输:从理论到实践的全景解析
378 3
|
7月前
|
存储 算法 C语言
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
|
7月前
|
机器学习/深度学习 存储 人工智能
数据结构与算法设计:深度解析与实践
数据结构与算法设计:深度解析与实践
149 0
|
7月前
|
存储 缓存 算法
【数据结构查找算法篇】----散列查找【实战项目】
【数据结构查找算法篇】----散列查找【实战项目】
99 10
|
7月前
|
存储 算法 Java
【数据结构查找算法篇】----线性查找【实战项目】
【数据结构查找算法篇】----线性查找【实战项目】
85 5