数据结构--冒泡排序和快速插入排序
题目:掌握常用的排序方法,并掌握用高级语言实现排序算法的方法;深刻理解排序的定义和各种排序方法的特点,并能加以灵活应用;了解各种方法的排序过程及其时间复杂度的分析方法。统计成绩:给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法:(1)按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;(2)按名次列出每个学生的姓名与分数。 冒泡排序 #include #include #include #include #define MAXSIZE 4 struct student{ char name[8]; int score; }stu[MAXSIZE]; int main() { int i,j,temp1,No=1; char temp2[MAXSIZE]; printf("请输入学生的姓名与分数:n"); for(i=0;i { printf("姓名:"); scanf("%s",stu[i].name); getchar(); printf("成绩:"); scanf("%d",&stu[i].score); } for(i=0;i { for(j=0;j { if(stu[j].score { temp1=stu[j].score; stu[j].score=stu[j+1].score; stu[j+1].score=temp1; strcpy(temp2,stu[j].name); strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,temp2); } } } for(i=0;i { if(stu[i].score!=stu[i-1].score) No=i; else No=No; printf("第%d名:%s的成绩为%dn",No+1,stu[i].name,stu[i].score); } return 0; } 快速插入: #include #include #include #define MAXSIZE 4 struct student{ char name[8]; int score; }stu[MAXSIZE]; int main() { int i,key,No=1; char temp[MAXSIZE]; printf("请输入学生的姓名与分数:n"); for(i=0;i { printf("姓名:"); scanf("%s",&stu[i].score); } for(i=1;i { if(stu[i].score>stu[i-1].score) { key=stu[i].score; strcpy(temp,stu[i].name); stu[i].score=stu[i-1].score; strcpy(stu[i].name,stu[i-1].name); for(j=i-2;key { stu[j+1].score=stu[j].score; strcpy(stu[j+1].name,stu[i].name); } stu[j+1].score=key; strcpy(stu[j+1].name,temp); } } for(i=0;i { if(stu[i].score!=stu[i-1].score) No=i; else No=No; printf("第%d名:%s的成绩为%dn",stu[i].score); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |