成绩排序 有问题:数据通过率66%求助,用的是冒泡排序加了while判断还是不对
- #include<stdio.h>
- #include<string.h>
-
- typedef struct{
- char name[100];
- int num;
- }student;
-
- int main(){
- int n, x;
- student stu[1000];
- while(scanf("%d %d",&n, &x) != EOF){
- for(int i = 0;i < n;i++){
- scanf("%s %d",stu[i].name,&stu[i].num);
- }
- student temp;
- for(int i = 0;i < n-1;i++)
- for(int j = 0;j < n-i-1;j++)
- if(x == 0)
- {
- if(stu[j+1].num > stu[j].num)
- {
- temp = stu[j];
- stu[j] = stu[j+1];
- stu[j+1] = temp;
- }
- }
- else{
- if(stu[j+1].num < stu[j].num){
- temp = stu[j];
- stu[j] = stu[j+1];
- stu[j+1] = temp;
- }
- }
- for(int i = 0;i < n;i++){
- printf("%s %d\n",stu[i].name,stu[i].num);
- }
- return 0;
- }
-
- }
登录后发布评论
应该是稳定性的问题,可以直接用stable_sort稳定排序