一、实验目的
(1)掌握常见的交换排序算法的思想及适用条件;
(2)掌握常见的交换排序算法的程序实现。
(3)了解各种交换排序的排序过程及其时间复杂度的分析方法。
二、实验要求
统计成绩: 给出 n 个学生的考试成绩表,每条信息由姓名和分数组成,试
设计一个算法:
(1) 按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的
为同一名次;
(2) 按名次列出每个学生的姓名与分数。
*** 三、实验步骤***
(1)定义结构体。
struct student
{
char name[8];
int score;
}
(2)编写主程序,对数据进行排序。
(3)要求至少采用两种排序算法实现,如冒泡排序、快速排序等算法。
(4)分析两种排序算法的时间复杂度和空间复杂度。
四、实验任务
认真阅读与理解实验内容的具体要求,参考教材相关章节,编写实验程序并
上机调试与测试,完成实验报告的撰写。
采用,冒泡排序,快速排序,和直接插入排序,有兴趣的可以继续加上一些排序
#includeusing namespace std; #define MAXSIZE 100 typedef struct { char name[8]; int score; } RedType; typedef struct { RedType r[MAXSIZE+1]; //r[0]闲置或用作哨兵单元 int length; //顺序表长度 } SqList; void insertList(SqList &L) { cout<<"请输入元素个数:"< >n; cout<<"请输入"< >L.r[i].name; cin>>L.r[i].score; } L.length=n; cout< 0)&&(flag==1)) { flag=0; //flag置为0,如果本趟排序没有发生交换,则不执行下趟排序 for (int j=1; j<=m; j++) if(L.r[j].score>L.r[j+1].score) { flag=1; //flag为1,表示本趟排序发生了交换 t=L.r[j]; L.r[j]=L.r[j+1]; L.r[j+1]=t; } --m; } } int findPos(SqList &L,int low,int hight) { int pivotkey; L.r[0]=L.r[low]; // L.r[0]]=L.r[low]; pivotkey=L.r[low].score; while(low =pivotkey) { hight=hight-1; } L.r[low]=L.r[hight]; while(low



