数据结构实验五.docx

上传人:b****2 文档编号:24361962 上传时间:2023-05-26 格式:DOCX 页数:9 大小:90.11KB
下载 相关 举报
数据结构实验五.docx_第1页
第1页 / 共9页
数据结构实验五.docx_第2页
第2页 / 共9页
数据结构实验五.docx_第3页
第3页 / 共9页
数据结构实验五.docx_第4页
第4页 / 共9页
数据结构实验五.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

数据结构实验五.docx

《数据结构实验五.docx》由会员分享,可在线阅读,更多相关《数据结构实验五.docx(9页珍藏版)》请在冰豆网上搜索。

数据结构实验五.docx

数据结构实验五

《数据结构》实验报告

实验题目:

实验五、查找排序

学号:

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.结果与结论(实验结果截图、结论总结)

通过该实验,我掌握了查找的概念、静态查找与动态查找、顺序查找、二分查找、索引查找、二叉排序树的概念、平衡二叉树、哈希查找、直接插入排序、快速排序、冒泡排序、简单选择排序等算法思想。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1