实验九 排序的基本操作
一、实验目的
1.掌握常用的排序方法,并掌握用C语言实现排序算法的方法; 2.理解排序的定义和各种排序方法的特点,并能加以灵活应用;
3.了解各种方法的排序过程及其依据的原则,并掌握各种排序方法的时间复杂度的分析方法。
二、实验内容
给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法:(1)按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;(2)按名次列出每个学生的姓名与分数。
提示:学生的考试成绩表必须通过键盘输入数据而建立,同时要对输出进行格式控制。参考算法中给出的是用简单选择排序算法实现的C语言程序。在此基础上,尝试用直接插入排序、快速排序等排序算法实现对该问题的求解。
三、实验步骤
在微型计算机上调试编写的程序,记录运行结果。
四、参考算法
#define N 10 struct student { char name[8]; int score; }R[n];
main ( )
{ int num, i, j, max, temp; printf(“\\n请输入学生成绩: \\n”); for (i=0; i scanf (“%s”, &R[i].name); scanf (“M”, &R[i].score); } num=1; for (i=0;i for (j=i+1;j if (R[j].score>R[max].score) max=j; 30 if (max!=i) { temp = R[max]; R[max]=R[i]; R[i]= temp; } if ((i>0)&&(R[i].score printf(“M%sM”, num, R[i].name, R[i].score); } } 31 附录一:实验报告要求 实验报告包括以下内容: 1.题目 2.实验目的 3.实验内容 4.实验步骤、分析 5.实验总结(包括思考题) 附录二:实验成绩评分办法实验成绩由以下几部分组成: 1.实验考勤占30% 2.实验态度与结果30% 3.实验报告40% 32