正在加载图片...
实验目的 1.掌握常用的排序方法,并掌握用高级语言实现排序的算法 2.深刻理解排序的定义和各种排序方法的特点,宾能加以灵活应用。 3.了解各种方法的排序过程以及依据的原则,并掌握各种排序方法的时间复杂度的分 析方法 二实验内容 1统计成绩 为题描述]给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法 (1)按分数高低顺序,打印出每个学生在考试中获得的名词,分数相等的为同一名次 (2)安名次列出每一个学生的姓名和成绩。 基本要求]学生的成绩必须通过键盘输入数据建立,同时要对输出进行格式控制。 [算法实现]下面给出的使用直接选择排序算法实现的C语言程序。在此基础上读者可以尝 试用直接插入, shell排序,冒泡排序,快续排序归并排序等算法实现本问题的求解 #define n 30 typedef struct student ichar name[ 8]; student rIn fint num, I, j, max, temp printf(“请输入学生成绩”) for(I=0,l<n1++) { printi(“姓名:“); for(I=0,<n;++) for(=l+lj<n j++) f(r[- score>rImax. score) i temp=r max r[]=r[l] r[l=temp f((I>o)&&(r[l]. score<r[I-1] score)) printf(num, r[I] name, r[l]. score);一. 实验目的 1. 掌握常用的排序方法,并掌握用高级语言实现排序的算法。 2. 深刻理解排序的定义和各种排序方法的特点,宾能加以灵活应用。 3. 了解各种方法的排序过程以及依据的原则,并掌握各种排序方法的时间复杂度的分 析方法。 二 实验内容 1 统计成绩 [为题描述]给出 n 个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法: (1) 按分数高低顺序,打印出每个学生在考试中获得的名词,分数相等的为同一名次; (2) 安名次列出每一个学生的姓名和成绩。 [基本要求]学生的成绩必须通过键盘输入数据建立,同时要对输出进行格式控制。 [算法实现]下面给出的使用直接选择排序算法实现的 C 语言程序。在此基础上读者可以尝 试用直接插入,shell 排序,冒泡排序,快续排序归并排序等算法实现本问题的求解 #define n 30 typedef strucr student {char name[8]; int score; } student r[n]; main() {int num,I,j,max,temp; printf(“请输入学生成绩”); for(I=0;I<n;I++) {printf(“姓名:“); scanf(stu[I].name); scanf(&stu[I].score); } num=1; for(I=0;I<n;I++) {max=I; for(j=I+1j<n;j++) if(r[j].score>r[max].score) max=j; if(max!=I) {temp=r[max]; r[max]=r[I]; r[I]=temp; } if((I>0)&&(r[I].score<r[I-1].score)) num=num+1; printf(num,r[I].name,r[I].score);
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有