2019年最新(中央电大)数据结构实验报告6
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中央广播电视大学实验报告(学科:数据结构)姓名单位班级学号实验日期成绩评定教师签名批改日期
实验名称:实验六排序
6.1 泡沫法排序的改进算法
【问题描述】
某班学生成绩信息表中每个学生的记录包括各门功课的成绩和平均成绩,以及按平均成绩的排名等信息,要求从键盘输入每个学生各门功课的成绩,计算出平均成绩,按平均成绩由高到低对信息的记录重新排序,并定出每位同学的名次,打印排序后的信息表。
【基本要求】
(1)建立学生成绩信息表,计算平均成绩。
(2)用泡沫法对平均成绩排序,程序中要求一旦序列被排好序就结束相应排序操作。【测试数据】
自行设计
【实验提示】
(1)用结构数组存放学生成绩信息表。
(2)在某趟泡沫中没有发生元素间的交换则说明已排好序
6.2 堆排序
【问题描述】
阅读筛选和建堆的程序,针对某一个待排序的序列,通过人工跟踪程序的执行,完成排序的全过程
【基本要求】
(1)掌握建堆、筛选的基本原理和算法步骤。
(2)写出主函数,试运行堆排序的程序。
(3)掌握堆排序的算法程序,能针对实例按步骤人工完成建堆和排序的过程。
【测试数据】
自行设计。
【实验提示】
(1)筛选是建堆的基本算法。
(2)把要排序序列看成一棵完全二叉树,用循环方式从最后一个非叶结(设序号为k)开始,逐次对序号为k, k-1, …的结点,直至根结点调用筛选算法,完成建堆。(3)不断通过堆顶元素与堆中最后一个元素的交换并筛选,完成排序。
实验报告内容:
实验6.1 冒泡法排序的改进
设计程序代码如下:
#include
#include
#define MAX 3
struct student{
char name[10];
float cs;
float ms;
float es;
float avg;
};
void sort(struct student s[],int n);
void sort(struct student s[],int n)
{
struct student temp;
int i,j;
for(i=1; i for(j=0; j if(s[j].avg temp = s[j]; s[j] = s[j+1]; s[j+1] = temp; } } void main() { struct student stu[MAX]; int i; printf("请输入%d 位同学的姓名和各科成绩\n",MAX); for(i=0;i { printf("请输入第%d 位学生的姓名: ",i+1); scanf("%s",stu[i].name); printf("\n"); printf("语文分数: "); scanf("%f",&stu[i].cs); printf("\n"); printf("数学分数: "); scanf("%f",&stu[i].ms); printf("\n"); printf("英语分数: "); scanf("%f",&stu[i].es); printf("\n"); stu[i].avg=(stu[i].cs+stu[i].ms+stu[i].es)/3; } sort(stu,MAX); printf("排名姓名语文数学外语平均分数\n"); for(i=0;i { printf("%d: %6s %3.2f %3.2f %3.2f %3.2f\n",i+1,stu[i].name,stu[i].cs,stu[i].ms,st u[i].es,stu[i].avg); } } 程序运行结果如下: 实验6.2 堆排序 设计程序代码如下: #include #define N 8 struct NODE { int date; }; void heapshift(struct NODE a[],int i,int n) { struct NODE temp; int j; temp=a[i]; j=2*i; while(j { if(j+1 j++; if(temp.date >a[j].date ) { a[i]=a[j]; i=j; j=2*i; } else break; } a[i]=temp; } void heapsort(struct NODE a[],int n) { int i; struct NODE temp; for(i=n/2;i>=1;i--) heapshift(a,i,n); for(i=n;i>1;i--) { temp=a[1]; a[1]=a[i]; a[i]=temp;