大佬教程收集整理的这篇文章主要介绍了直接插入排序,快速排序,选择排序给学生成绩排名,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include<stdio.h> #include<malloc.h> #include<@R_489_10495@ng.h> typedef struct{ char name[20]; int score; }ElemType; typedef struct{ ElemType *elem; int length; }SqList; void menu(); void SlectSort(SqList L); void InsertSort(SqList ST); int partition(SqList &L,int low,int high); void Qsort(SqList &L,int high); int main() { printf("\n******学生成绩排序******"); printf("\n\n**************************\n"); printf(" 1 ------- 输入学生数\n"); printf(" 2 ------- 输入学生姓名及成绩\n"); printf(" 3 ------- 用直接插入排序输出名次\n"); printf(" 4 ------- 用快速排序输出名次\n"); printf(" 5 ------- 用选择排序输出名次\n"); printf(" 6 ------- 退出\n"); printf(" 请选择1-6\n"); printf("**************************\n"); menu(); return 0; } void menu() { SqList ST; int key,n,i,done=1; while (donE) { printf("请输入数字 : "); scanf("%d",&key); switch(key) { case 1: printf("请输入学生数:(n>=10)"); scanf("%d",&n); break; case 2: ST.length=n; ST.elem=(ElemType*)malloc((n+1)*sizeof(ElemTypE)); for(i=1;i<=n;i++) { printf("请输入第%d个学生的基本信息:(姓名 成绩)\n",i); scanf("%s%d",ST.elem[i].name,&ST.elem[i].score); } break; case 3: //直接插入排序 InsertSort(ST); break; case 4: //快速排序 Qsort(ST,1,ST.length); for(i=1;i<=ST.length;i++) printf("第%d名:%s %d\n",ST.elem[i].score); break; case 5: //选择排序 SlectSort(ST); break; case 6: done=0; break; default: printf(" ERROR\n"); } printf("\n"); } } void InsertSort(SqList ST) { int i,j; for(i=2;i<=ST.length;++i) if(ST.elem[i].score>ST.elem[i-1].score) { ST.elem[0]=ST.elem[i]; ST.elem[i]=ST.elem[i-1]; for(j=i-2;ST.elem[0].score>ST.elem[j].score;--j) ST.elem[j+1]=ST.elem[j]; ST.elem[j+1]=ST.elem[0]; } for(i=1;i<=ST.length;i++) printf("第%d名:%s %d\n",ST.elem[i].score); } int partition(SqList &L,int high) { int pivotkey; pivotkey=l.elem[low].score; l.elem[0]=l.elem[low]; while(low<high) { while(low<high&&l.elem[high].score<=pivotkey) --high; l.elem[low]=l.elem[high]; while(low<high&&l.elem[low].score>=pivotkey) ++low; l.elem[high]=l.elem[low]; } l.elem[low]=l.elem[0]; return low; } void Qsort(SqList &L,int high) { int pivotloc; if(low<high) { pivotloc=partition(L,low,high); Qsort(L,pivotloc-1); Qsort(L,pivotloc+1,high); } } void SlectSort(SqList L) { int i,j,k; ElemType temp; for(i=1;i<l.length;i++) { k=i; for(j=i+1;j<=l.length;j++) if(l.elem[j].score>l.elem[k].score) k=j; if(i!=k) { temp=l.elem[k]; l.elem[k]=l.elem[i]; l.elem[i]=temp; } } for(i=1;i<=l.length;i++) printf("第%d名:%s %d\n",l.elem[i].name,l.elem[i].score); }
以上是大佬教程为你收集整理的直接插入排序,快速排序,选择排序给学生成绩排名全部内容,希望文章能够帮你解决直接插入排序,快速排序,选择排序给学生成绩排名所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。