查找算法实现与性能分析 (数据结构课程设计)
- 格式:doc
- 大小:78.00 KB
- 文档页数:9
南京工程学院
课程设计说明书(论文)
题目查找算法实现与性能分析
课程名称数据结构
院(系、部、中心)通信工程
专业
班级
学生姓名
学号
设计地点
指导教师
设计起止时间:2009年12月28 日至2009 年12 月31日
目录
1.功能描述(或设计目标)1 2.总体设计(或概要设计)2 2.1数据结构描述与定义2 2.2模块设计3 3.测试结果与分析3 4.课程设计总结7参考文献: 7
1.功能描述(或设计目标)
系统的功能:
一、数据结构的定义
二、静态查找算法实现
1.顺序查找:是从数组的最后一个元素开始查找,直到找到待查找元素的位置,直到查找到结果。
2.折半查找:折半查找是将待查找的数组元素不断的分为两部分,每次淘汰二分之一,但是有个大前提是,元素必须是有序的,如果是无序的则要先进行排序操作
三、动态查找算法实现
二叉排序树建立、查找:二叉查找树是先对待查找的数据进行生成树,确保树的左分支的值小于右分支的值,然后在就行和每个节点的父节点比较大小。
若二叉排序树为空,则查找不成功;否则:
1)若给定值等于根结点的关键字,则查找成功;
2)若给定值小于根结点的关键字,则继续在左子树上进行查找;
3)若给定值大于根结点的关键字,则继续在右子树上进行查找。
四、性能分析(用大批量数据测试算法的执行时间)
1.对有序表进行折半查找在查找成功的前提下,对于任意的表长n,当n>50的时候,其平均查找长度(ASL)近似为log(2)[n+1] -1,要比顺序查找的ASL((n+1)/2)高效得多,但是顺序查找对于任意次序的表都适合,而折半查找是必须针对有序表并且不是线性链表。
对于无序表,采用折半查找之前,需要排序,根据采用排序算法的不同,此时整个折半查找的时间复杂度需要考虑排序的时间,而不仅仅是折半查找的时间复杂度。
2.二叉排序树中插入新结点,要保证插入后仍满足BST性质。
其插入过程是:
(a)若二叉排序树T为空,则为待插入的关键字key申请一个新结点,并令其为根;
(b)若二叉排序树T不为空,则将key和根的关键字比较:
(i)若二者相等,则说明树中已有此关键字key,无须插入。
(ii)若key <T→key,则将key插入根的左子树中。
(iii)若key>T→key,则将它插入根的右子树中。
子树中的插入过程与上述的树中插入过程相同。
如此进行下去,直到将key 作为一个新的叶结点的关键字插入到二叉排序树中,或者直到发现树中已有此关键字为止
2.总体设计(或概要设计)
2.1数据结构描述与定义
此程序定义了一个结构体,运用了switch函数\等辅助函数。
除此之外,还有顺序查找函数、折半查找函数、二叉排序树查找函数等算法函数。
2.2模块设计
顺序查找
折半查找
二叉排序树的查找
3.测试结果与分析
测试结果:请选择查找方式
1.顺序查找:输入建立表的长度:5 输入序列值:23 34 14 67 45 输入要查找的键值:14 查找下标是4 查找次数3
2.折半查找:输入建立表的长度:5 输入序列值:23 34 14 67 45 输入要查找的键值:14 查找下标是4 查找次数3
3.二叉排序树查找:输入建立表的长度:5 输入序列值:23 34 14 67 45 9999
Create is completed 14 23 34 45 67输入要查找的键值:14 查找次数2
分析:顺序查找平均查找长度为(n+1)/2
折半查找平均查找长度为log2(n+1)-1
4.课程设计总结
通过本次实验,我实现了顺序查找、折半查找、二叉排序树查找等算法。
比较了各种查找方式的平均查找长度以及时间复杂度。
虽然不是一次编程了,但在此过程中还会遇到一些编辑中的错误和一些语法和算法错误,他们需要我们认真去查找和更改。
在此也报漏了学习上的问题,学的不够好,认识的不到位,还有对以前知识的遗忘,不仅这些,有时有好的方法,但运用起来就会出现问题。
这些都需要在以后的学习中不断的提高和加强,达到高质量高效率完成。
在此程序中也作一个完好的界面,这样能让使用者更加清楚该如何使用你的程序。
并且要在程序编码中加入注释以便于他人观看你原程序的方便,达到资源的可利用化。
总体说来,在这次程序设计中,我学会了许多,也发现了许多问题,这些都需要我在以后的学习中不断的完善,不断的成长。
当然学习到了东西和不足。
我会在以后的学习中我会更加努力,认真的学好知识。
加强上级实践,在实践中查找错误,改正错误,不断加强自己的知识。
让自己达到更高的水平。
当然学习到了东西和不足。
我会在以后的学习中我会更加努力,认真的学好知识。
加强上级实践,在实践中查找错误,改正错误,不断加强自己的知识。
让自己达到更高的水平。
参考文献:
1.严蔚敏,吴伟民.数据结构(C语言版).北京:清华大学出版社,1997 2.朱战立.数据结构.西安:西安电子科技大学出版社,2004
3.严蔚敏,吴伟民.数据结构题集(C语言版).北京:清华大学出版社,2000。