直接插入排序,快速排序,选择排序给学生成绩排名
发布时间:2020-12-14 22:55:08 所属栏目:大数据 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #includestdio.h#includemalloc.h#includestring.htypedef struct{char name[20];int score;}ElemType;typedef struct{ElemType *elem;int length;}Sq
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #include<stdio.h> #include<malloc.h> #include<string.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("nn**************************n"); printf(" 1 ------- 输入学生数n"); printf(" 2 ------- 输入学生姓名及成绩n"); printf(" 3 ------- 用直接插入排序输出名次n"); printf(" 4 ------- 用快速排序输出名次n"); printf(" 5 ------- 用选择排序输出名次n"); printf(" 6 ------- 退出n"); printf(" 请选择1-6n"); 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 %dn",ST.elem[i].score); break; case 5: //选择排序 SlectSort(ST); break; case 6: done=0; break; default: printf(" ERRORn"); } 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 %dn",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 %dn",L.elem[i].name,L.elem[i].score); } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |