实验4 排序的基本操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七排序的基本操作
一、实验目的与基本要求
1.掌握常用的排序方法,并用高级语言实现排序算法。
2.理解排序的定义和各种排序的特点。
3.了解排序过程以及依据的原则,并了解各种排序方法的时间复杂度分析。
二、实验条件
1.硬件:一台微机
2.软件:操作系统和C语言系统
三、实验方法
确定存储结构后,上机调试不同的排序方法。
四、实验内容
1.设计一待排序的线性表以顺序存储结构存储,试写出冒泡排序算法。
2.给出n个学生的考试成绩表,每条信息由姓名与分数组成,试设计一个算法:(1)按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次。
(2)按名次列出每个学生的姓名与分数。
五、实验提示
1、参考程序如下:
#include “stdio.h”
#define N 10
main( )
{ int a[N+1];
int i,j,t;
for(i=1;i<=N;i++)
scanf(“%d”,&a[i]);
printf(“\n”);
for(j=1;j for(i=1;i if(a[i]>a[i+1]) {t=a[i]; a[i]=a[i+1]; a[i+1]=t; } printf(“the sorted numbers:\n”); for(i=1;i<=N;i++) printf(“%4d”,a[i]); } 2、基本思想:学生的考试成绩表必须通过键盘输入数据而建立,同时要对输出进行格式控制。给出的是用简单选择排序算法实现的C语言程序。在此基础上,可以尝试用直接插入、冒泡排序、快速排序等排序算法实现对该问题的求解。参考程序如下: #definne n 30 struct student { char name[8]; int score; } struct student R[n];/* 用简单选择排序算法统计学生成绩排名*/ main() { int num,i,j,max; struct student temp; printf(”\n 请输入学生成绩:\n”); for(i=0;i { printf(“姓名:”); scanf(“%s”,R[i].name); scanf(“%4d”,&R[i].score); } num=1; for(i=0;i { max=i; for(j=i+1;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 num=num+1; printf(“%4d%s%4d”,num,R[i].name,R[i].score); } } /* main */