实验6 查找和排序 (2)(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六、七:查找、排序算法的应用
班级 10511 学号 20103051114 姓名高卫娜
一、实验目的
1 掌握查找的不同方法,并能用高级语言实现查找算法。
2 熟练掌握顺序表和有序表的顺序查找和二分查找方法。
3 掌握排序的不同方法,并能用高级语言实现排序算法。
4 熟练掌握顺序表的选择排序、冒泡排序和直接插入排序算法的实现。
二、实验内容
1 创建给定的顺序表。表中共包含八条学生信息,信息如下:
学号姓名班级C++ 数据结构
1 王立03511 85 76
2 张秋03511 78 88
3 刘丽03511 90 79
4 王通03511 7
5 86
5 赵阳03511 60 71
6 李艳03511 58 68
7 钱娜03511 95 89
8 孙胜03511 45 60
2 使用顺序查找方法,从查找表中查找姓名为赵阳和王夏的学生。如果查找成功,则显示该生的相关信息;如果查找不成功,则给出相应的提示信息。
3 使用二分查找方法,从查找表中查找学号为7和12的学生。如果查找成功,则显示该生的相关信息;如果查找不成功,则给出相应的提示信息。(注意:创建静态查找表时必须按学号的从小到大排列!)
4 使用直接插入排序方法,对学生信息中的姓名进行排序。输出排序前和排序后的学生信息表,验证排序结果。
5 使用直接选择排序方法,对学生信息中的C成绩进行排序。输出排序前和排序后的学生信息表,验证排序结果。
6 使用冒泡排序方法,对学生信息中的数据结构成绩进行排序。输出排序前和排序后的学生信息表,验证排序结果。
7 编写一个主函数,将上面函数连在一起,构成一个完整程序。
8 将实验源程序调试并运行。
三、实验结果
源程序代码为:
#include
#include
#include
#define MAXSIZE 10
typedef char KeyType1;
typedef int KeyType2;
typedef struct
{
//学号姓名班级C++ 数据结构
KeyType1 name[20];
KeyType2 xuehao;
KeyType1 Class[20];
double score[2];
} DataType;
typedef struct
{
DataType data[MAXSIZE+1];
int len;
} SeqList;
//顺序表的创建
void create(SeqList &L)
{
cout<<"请输入顺序表的大小:"< cin>>L.len; cout<<"请输入顺序表中八条学生信息(学号姓名班级C++ 数据结构):"< for(int i=1;i<=L.len;i++) { cin>>L.data[i].xuehao; cin>>L.data[i].name; cin>>L.data[i].Class; cin>>L.data[i].score[0]; cin>>L.data[i].score[1]; } } void Input(SeqList &L) { for(int i=1;i<=L.len;i++) { cin>>L.data[i].xuehao; cin>>L.data[i].name; cin>>L.data[i].Class; cin>>L.data[i].score[0]; cin>>L.data[i].score[1]; } } //顺序表的显示 void print(SeqList L) { cout<<"学号姓名班级C++ 数据结构"< if(L.len==0) { cout<<"该表是空表!"< return; } for(int i=1;i<=L.len;i++) { cout<<" "< cout< } } //顺序查找方法从查找表中查找姓名为赵阳和王夏的学生 void S_Search(SeqList L) { char na[20]; cout<<"请输入要查找的同学的姓名:"< cin>>na; strcpy(L.data[0].name,na); //监视哨 int i=L.len; while(strcmp(L.data[i].name,na)>0||strcmp(L.data[i].name,na)<0) i--; if(i>0) { cout<<"您要查找的学生的信息:"< cout<<" "< cout< } if(i<=0) {