数据查找 C++课程设计报告.docx
- 文档编号:8682209
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:25
- 大小:174.14KB
数据查找 C++课程设计报告.docx
《数据查找 C++课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据查找 C++课程设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
数据查找C++课程设计报告
淮阴工学院
C++程序设计课程设计报告
选题名称:
数据查找
系(院):
计算机工程系
专业:
通信工程
班级:
通信XXXX
姓名:
XXXXXXXXX学号:
XXXXXX
指导教师:
王晓燕戴俊峰
学年学期:
20X~2X学年第X学期
XXX年XX月XX日
设计任务书
课题
名称
数据查找
设计
目的
1.调研并熟悉数据查找的基本概念、查找算法;
2.学习与算法相关的参考资料和基于VC++集成环境的编程技术;
3.通过实际编程加深对基础知识的理解,提高实践能力;
4.学习开发资料的收集与整理,学会撰写课程设计报告。
实验
环境
1.微型电子计算机(PC);
2.安装Windows2000以上操作系统,VisualC++6.0开发工具。
任务
要求
1.利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;
2.在第16周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;
3.本课题主要实现顺序查找、二分查找、索引查找、散列查找,选择某一种查找算法后,显示查找结果。
4.结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。
工作进度计划
序号
起止日期
工作内容
1
2009.06.7~2009.06.7
在预设计的基础上,进一步查阅资料,完善设计方案,形成书面材料。
2
2009.06.7~2009.06.10
设计总体方案,构建、绘制流程框图,编写代码,上机调试。
3
2009.06.11~2009.06.12
测试程序,优化代码,增强功能,撰写设计报告。
4
2009.06.12~2009.06.13
提交软件代码、设计报告,参加答辩,根据教师反馈意见,修改、完善设计报告。
指导教师(签章):
年月日
摘要:
计算机在不断的更新换代,计算机科学技术也在不断的进步和发展。
数据查找在当今计算机应用领域中空前的活跃。
作为当代大学生,而且作为计算机专业的学生,掌握和运用好数据查找是相当重要的。
这次课程设计主要是通过:
顺序查找、二分查找、索引查找、散列查找四种查找方法来实现对数据的查找。
顺序查找方法既适用于线性表的顺序存储结构,也适用于线性表的链式存储结构。
顺序查找虽然算法简单且适应面还是速度较慢。
二分查找又称折半查找,它则要求线性表是有序表。
使用索引能够快速的定位查找范围,使得可以将数据分块的读入内存查找。
散列查找的方法主要是用于快速查找,不以关键字的比较为基本操作,而是直接采用直接寻址技术。
在理想情况下,无须任何比较就可以找到待查关键字。
相对而言,散列查找显得更为方便。
通过以上几种基本操作查找数据得到统计信息,如访问数组中的某一元素,或某一结构体中定义的信息,或通过索引目录更轻松更明了地得到自己想要获得的信息内容,充分展示了合理优化的查找算法所带来的便捷。
关键词:
数据查找顺序查找二分查找索引查找散列查找
目录
1课题综述…………………………………………………………………………1
1.1课题来源及意义……………………………………………………………1
1.2预期目标……………………………………………………………………1
1.3面对的问题…………………………………………………………………1
1.4需解决的关键技术…………………………………………………………1
2基础知识的概述…………………………………………………………………2
2.1涉及的知识基础……………………………………………………………2
2.2查找的基础知识……………………………………………………………2
3数据查找方法的思路及代码分析………………………………………………3
3.1顺序查找……………………………………………………………………………3
3.1.1基本思路………………………………………………………3
3.1.2算法描述………………………………………………………3
3.1.3运行与调试…………………………………………………………5
3.1.4性能描述……………………………………………………………5
3.2二分查找………………………………………………………………………………6
3.2.1基本思路……………………………………………………………6
3.2.2算法描述……………………………………………………………6
3.2.3运行与测试…………………………………………………………10
3.2.4性能描述……………………………………………………………10
3.3索引查找………………………………………………………………………………11
3.3.1基本思路……………………………………………………………11
3.3.2算法描述……………………………………………………………11
3.3.3运行与调试……………………………………………………13
3.3.4性能描述……………………………………………………………14
3.4散列查找………………………………………………………………………………14
3.4.1基本思路……………………………………………………………14
3.4.2算法描述……………………………………………………………14
3.4.3运行与调试……………………………………………………16
3.4.4性能描述……………………………………………………………17
4程序调试………………………………………………………………………………………17
5运行与测试……………………………………………………………………………………18
6结论……………………………………………………………………………………………19
7总结…………………………………………………………………………………………20
8致谢…………………………………………………………………………………………21
9参考文献……………………………………………………………………………………22
1课题综述
1.1课题来源及意义
本次课题为数据查找,在现代计算机技术中具有较为广泛的运用。
数据查找分为顺序查找,二分查找,索引查找,散列查找,应用这几种方法可以较快的查找到想要查找的数据。
查找数据是一种提高速率的有效途径。
运用数据查找的算法就可以很方便的找到,大量节省了查找时间。
1.2预期目标
通过对顺序查找,二分查找,索引查找,散列查找四种算法的编辑、调试和运行,基本实现程序运行,得到想要的结果。
并且通过这次课程设计对C++的一些知识有更深层次的了解和掌握。
1.3面对的问题
这是第一次接触C++语言,也是第一次使用C++语言来完成课程设计,由于平时基础不牢,在运用知识的时候不能得心应手。
从理论到实践操作遇到了很大的麻烦。
平时觉得自己掌握的东西,但真的运用的时候又不知道怎样去用好它,不知道如何转变成C++标准的语句。
索引和散列查找是两个全新的概念,而且相对难一点,要从书中或上网查资料,了解掌握这些知识,花了很多时间。
而且在调试的时候又遇到了很多问题。
1.4需解决的关键技术
牢固的C++理论知识是本次课程设计的基础。
如调用四个函数实现四种方法的查找,尤其在后两种算法中,需要运用到指针和结构体的知识点。
指针和结构体的知识本来就相对难一点。
顺序查找和二分查找是基础,索引查找和散列查找是知识的延伸和拓展。
在调试的时候要及时找出自己的错误所在,并学会总结,学会和同学,老师一起探讨问题的所在,一起完善程序。
2基础知识的概述
2.1涉及的知识基础
查找又称检索,是程序设计中最基本的操作之一,查找运算的使用频率很高,也是计算机应用中较为广泛使用的操作之一,几乎在任何一个计算机系统软件和应用软件中都会涉及到,好的查找算法可以加快计算机信息处理的速度。
所以当问题所涉及的数据量相当大时,查找方法的效率就显得格外重要。
因此,这次课程设计我系统地分析了几种查找方法,并通过对它们的效率分析来比较各种查找方法的优劣。
结构变量成员的访问方式:
对结构变量中成员的引用形式或可以通过结构指针来访问结构变量的成员。
数组概念:
在C++中,数组是一种集合数据类型,它由许多元素组成,每一个元素都有相同的数据类型,在内存中占用相同大小的存储单元,且在内存中连续存放。
每一个数组有一个名字,数组中的每一个元素有一个序号(或称下标)表示元素在数组中的位置,正是通过下标来识别数组中的每一个元素。
结构与数组不同,是不同数据类型的数据集合。
结构中的不同类型的数据都是有关联的,它们被作为一个整体来看待。
结构类型在使用之前必须先定义。
本次课程设计除用到结构体,数组等知识外,还用到for语句,while语句,Switch语句,if-else语句等面。
2.2查找的基础知识
查找表是由同一个类型的数据元素(或纪录)构成的集合。
关键字是数据元素中某个数据项的值,用它可以识别一个数据元素。
如果此关键字可以唯一地标识一个数据元素,则称此关键字;反之,称用以识别若干数据元素的关键字为次关键字。
查找是根据给定的关键字字值,在表中确定一个其关键字等于给定值的数据元素的过程。
如果表中存在这样的一个数据元素,则查找成功,查找结果可以输出该数据元素的有关信息或指示该数据元素在查找表中的位置;如果表中不存在这样的数据元素,则查找不成功,此时的查找结果可以给出一个空指针。
for()循环语句的一般格式为:
for(<表达式1>;<表达式2>;<表达式3>)S,三个表达式都可以是C++中的任一符合语法规则的表达式;语句S可以是任一C++的语句。
S也称为循环体。
for()语句的执行过程可描述为:
A求出表达式1的值;B求出表达式2的值,若表达式2的值等于0,则执行D,否则执行C;C执行语句S,求表达式3的值,转B;D结束循环,执行for()后面的语句。
结构体类型是一种导出的数据类型,编译程序并不为任何数据类型分配存储空间,只有定义了结构体类型的变量时,系统才为这种变量分配存储空间。
要定义结构体类型变量,必须先说明结构体类型。
定义一个结构体类型的一般格式为:
struct<结构体类型名>{
<类型名><变量1>;
《<类型名><变量2>…》
};
3数据查找方法的思路及代码分析
3.1顺序查找
顺序查找也称线性查找,是一种最简单的查找方法。
3.1.1顺序查找的基本思路
从表的一端开始,顺序扫描线性表,依次将扫描到的结点关键宇和给定值b比较。
若当前扫描到的结点关键字与b等,则查找成功,输出该元素所在下标;若扫描结束后,仍未找到关键字等于b结点,则查找失败,输出“该数组中没有要查询的数据。
”的字样。
3.1.2顺序查找的算法描述
voidsx(inta[],intb)
{
inti;
cout<<"输入数组(包括5个元素):
"< for(i=0;i<5;i++) cin>>a[i]; cout<<"要查询的数据: "; cin>>b; for(i=0;i<5;i++) if(a[i]==b) cout<<"要查询的数据是该数组中的第"< if(i==4) cout<<"在该数组中没有要查询的数据."< } 对应顺序查找流程图1: 该方法使用的是基本算法,有一种改进算法比这种方法更可行一些。 后一种算法的不同之处是: 在表的尾端a[n]设一岗哨,在查找前先将b赋给a[n],这样每循环一次不需比较下标是否越界,当比较到第n位置时,由于a[n]=b成立,必退出循环。 3.1.3顺序查找代码的运行与调试 进行调试: 显示如下界面 数据查找 ============================ 1.顺序查找 2.二分查找 3.索引查找 4.散列查找 请选择(1~4,0: 退出): 1//选择方法一也就是顺序查找 输入数组: 12345//输入一组数据 要查询的数据: 3//输入了要查询的数组元素 要查询的数据是该数组中的第3个数.//程序运行在数组元素中找到了与关键字相同的元素 要查询的数据是该数组中的第3个数.//找到了一个相同的元素但元素还没查询完,继续查询又找到了一个相同值的元素 数据查找//查询完该数组中的元素,已没 ============================有与给定值相同的元素,界面1.顺序查找返回主菜单进行下一个方的 2.二分查找调试 3.索引查找 4.散列查找 请选择(1~4,0: 退出): 3.1.4顺序查找的性能描述 顺序查找的优点: 算法简单且适用广。 对表的结构没有要求,无论纪录是否按关键字有序均可应用。 顺序查找的缺点: 平均查找长度较大,当原始元素很多时,查找效率较低。 3.2二分查找 二分查找也称折半查找,是一种效率教高的查找方法,查找时要求表的结点按关键字的大小排序,并且要求线性表顺序存储。 将线性表按由小到大的顺序排好。 3.2.1二分法查找的基本思路 二分查找的过程: 首先确定待查记录所在的范围,然后逐渐缩小范围直至得到查找结果。 (1)所输的数组按降序排好,令min=0,使a[min]为数组中最小关键字值的元素。 令max=n-1,使a[max]为数组中最大关键字值的元素。 设mid=(min+max)/2,使a[mid]为待查记录所在范围的中间位置关键字值的元素。 (2)给定的值b与a[mid]进行比较,如果相等表示查找成功;如果不相等则还存在以下两种情况: [1].当b的值小于a[mid]的值,说明b在mid和min之间,则令max=mid-1,在表的前半部分再取中间位置的记录与关键字进行比较。 [2].当b的值大于a[mid]的值,说明b在mid和max之间,则令min=mid+1,在表的前半部分再取中间位置与记录的关键字进行比较。 如此反复进行,直到找到该元素或是查完整个数组却找不到该元素为止。 由此可以看出,由于收索范围成指数的缩小,因此折半查找的速度明显要快于顺查找。 3.2.2二分法查找的算法描述 voidef(inta[],intm) { inti,j,temp,k=0; intx=0,y=4,mid;//A cout<<"输入数组: "< for(i=0;i<5;i++) cin>>a[i];//B for(i=1;i<5;i++) for(j=0;j<5-i;j++) if(a[j] { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } cout<<"按降序排序后的数组为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据查找 C+课程设计报告 数据 查找 C+ 课程设计 报告