数据结构实验五.docx
- 文档编号:27041027
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:9
- 大小:90.38KB
数据结构实验五.docx
《数据结构实验五.docx》由会员分享,可在线阅读,更多相关《数据结构实验五.docx(9页珍藏版)》请在冰豆网上搜索。
数据结构实验五
《数据结构》实验报告
实验题目:
实验五、查找排序
姓名:
学号:
142054301班级:
1420543
系名:
计算机工程系专业:
计算机科学与技术指导老师:
实验时间:
2016年6月14日实验地点:
专业软件实验室
【实验概述】
1.实验目的及要求
目的:
1.掌握哈希表的定义,哈希函数的构造方法。
2.掌握并比较各种排序算法。
要求:
预习并掌握查找的概念、静态查找与动态查找、顺序查找、二分查找、索引查找、二叉排序树的概念、平衡二叉树、哈希查找、直接插入排序、快速排序、冒泡排序、简单选择排序等算法思想。
2.实验原理
1、树的逻辑结构特点:
树(tree)是n(n≥0)个结点的有限集T,其中:
(1)有且仅有一个特定的结点,称为树的根(root);
(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,……Tm,其中每一个集合本身又是一棵树,称为根的子树(subtree)。
2、树结构中的基本术语,以及树的树形结构表示。
3、二叉树的逻辑结构特点:
1、查找和排序是日常数据处理过程中经常要进行的操作和运算。
2、查找是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或(记录)。
若查找表中存在这样一个记录,则称“查找成功”,查找结果:
给出整个记录的信息,或指示该记录在查找表中的位置;否则称“查找不成功”,查找结果:
给出“空记录”或“空指针”。
3、静态查找与动态查找的区别。
平均查找长度。
4、查找算法有:
静态查找中常见的查找算法:
顺序查找、二分查找、索引查找。
动态查找中常见的算法有二叉排序树和平衡二叉树上的查找。
平均查找长度为0的哈希查找。
5、排序是是将一组“无序”的记录序列调整为“有序”的记录序列。
6、排序算法的优劣从空间复杂度、时间复杂度、稳定性三个角度分析。
7、常见的排序算法可分为:
插入类、交换类、选择类、归并排序、基数排序等。
3.实验环境(使用的软件)
VC++6.0
【实验内容】
1.实验算法设计
设计一个学生信息管理系统,学生对象至少要包含:
学号、姓名、成绩等信息。
要求实现以下功能:
1、查找:
分别给定学生学号、姓名,能够查找到学生的基本信息(要求至少实现改进后的顺序查找算法);
2、排序:
分别按学生的学号、成绩进行排序(要求至少用实现直接插入排序、冒泡排序、简单选择排序算法)。
2.实验过程(源代码及描述、调试过程及分析)
#include
#include
usingnamespacestd;
structstudent
{
intnum;//学号
charname[20];//姓名
charbanji[20];//班级
intc;//C语言课程成绩
intdatastruct;//数据结构课程成绩
};
structqueue
{
structstudenta[8];
intlenth;
};
classlist
{
private:
queued;
public:
intseqsearch(list,char*);
intbinsearch(list,int,int,int);
voidinsertsort(list);
voidselectsort(list);
voidbubblesort(list);
list();
voiddisplay(list);
voidshow(int);
};
list:
:
list()
{
structstudente[8]={
{1,"王丽","03511",85,76},
{2,"张秋","03511",78,77},
{3,"刘丽","03511",90,79},
{4,"王童","03511",75,86},
{5,"赵阳","03511",60,71},
{6,"李艳","03511",58,68},
{7,"钱娜","03511",95,89},
{8,"孙胜","03511",45,60},
};
for(inti=0;i<8;i++)
d.a[i]=e[i];
}
voidlist:
:
show(inti)
{
if(i==-1)
cout<<"sorrynotfound!
!
"< else { cout<<"学号"<<"班级"<<"c++"<<"数据结构\n"; cout<<""< cout< cout< cout< cout< } } voidlist: : display(listl) { cout<<"学号"<<"班级"<<"c++"<<"数据结构\n"; for(inti=0;i<8;i++) { cout<<""< cout< cout< cout< cout< } } intlist: : seqsearch(listl,charname[20])//顺序查找 { for(inti=0;i<8;i++) if(strcmp(l.d.a[i].name,name)==0) returni; return-1; } voidlist: : insertsort(listl)//直接插入排序 { structstudentn; for(inti=1;i<8;i++) { n=l.d.a[i]; intj=i-1; while(j>=0&&strcmp(n.name,l.d.a[j].name)<0) { l.d.a[j+1]=l.d.a[j]; j--; } l.d.a[j+1]=n; } display(l); } voidlist: : selectsort(listl)//简单选择排序 { for(inti=0;i<7;i++) { intj=i; for(intk=j;k<8;k++) { if(l.d.a[j].c j=k+1; } if(j! =i) { students=l.d.a[i]; l.d.a[i]=l.d.a[j]; l.d.a[j]=s; } } display(l); } voidlist: : bubblesort(listl)//冒泡排序 { for(inti=7;i>0;i--) for(intj=0;j { if(l.d.a[j].datastruct>l.d.a[j+1].datastruct) { studentd=l.d.a[j]; l.d.a[j]=l.d.a[i+1]; l.d.a[j+1]=d; } } display(l); } voidmain() { listl; cout<<"顺序查找姓名为赵阳的学生\n"; inti=l.seqsearch(l,"赵阳"); l.show(i); cout< cout<<"直接插入排序对姓名进行排序\n"; cout<<"排序前的结果: \n"; l.display(l); cout<<"排序后的结果: \n"; l.insertsort(l); cout< cout<<"简单选择排序对c语言成绩进行排序\n"; cout<<"排序前的结果: \n"; l.display(l); cout<<"排序后的结果: \n"; l.selectsort(l); cout< cout<<"冒泡排序对数据结构成绩进行排序\n"; cout<<"排序前的结果: \n"; l.display(l); cout<<"排序后的结果: \n"; l.bubblesort(l); cout< } 3.结果与结论(实验结果截图、结论总结) 通过该实验,我掌握了查找的概念、静态查找与动态查找、顺序查找、二分查找、索引查找、二叉排序树的概念、平衡二叉树、哈希查找、直接插入排序、快速排序、冒泡排序、简单选择排序等算法思想。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)