题解 | #成绩排序#

成绩排序

http://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1

使用冒泡排序,具有稳定性,平均时间复杂度为O(n*n)

#include <stdio.h>
#include <stdlib.h>

#define N 200

typedef struct student{
    char name[15];
    int score;
}STUDENT;

int SortDesc(int a,int b){
    return a<b;
}

int SortAsc(int a,int b){
    return a>b;
}

// 冒泡排序
void BubbleSort(STUDENT stu[],int n,int (*compare)(int a,int b)){
	STUDENT temp;
    int i,j,flag;
	
	for(i=0;i<n-1;i++){
		flag=0;
		for(j=n-1;j>i;j--){
			if((*compare)(stu[j-1].score ,stu[j].score)){
				flag=1;
				temp = stu[j-1];
				stu[j-1] = stu[j];
				stu[j] = temp;
			}
		}
		if(flag==0){
			break;
		}
	}
}

void PrintStu(STUDENT stu[],int n){
    int i;
    for(i=0;i<n;i++){
        printf("%s %d\n",stu[i].name,stu[i].score);
    }
}

int main(){
    int i,j,n,sortMode;
    STUDENT stu[N];

    while(scanf("%d%d",&n,&sortMode)!=EOF){
        for(i=0;i<n;i++){
            scanf("%s",stu[i].name);
            scanf("%d",&stu[i].score);
    }
    if(sortMode==1){
        BubbleSort(stu,n,SortAsc);
    }else{
        BubbleSort(stu,n,SortDesc);
    }
        PrintStu(stu,n);
    }
}

全部评论

相关推荐

09-17 19:25
已编辑
太原理工大学 游戏测试
叁六玖:公司名发我,我要这个HR带我打瓦
我的秋招日记
点赞 评论 收藏
分享
评论
7
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务