实验4 排序的基本操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 */

相关文档
最新文档