修改wordpress入口地址网络推广优化平台
前言
先按照课程编号从小到大排序,再按照成绩从高到底的顺序进行排序.
整体来说还是使用了冒泡排序,只不过比较的规则变了。
C语言示例代码
/**C语言 结构体数组 先按照课程编号从小到大排序,再按照成绩从高到底的顺序进行排序
**/
#include <stdio.h>
typedef struct student{long id; // 学号 long course_id; //课程编号 float score; //分数
}Stu;
void print(Stu stuArray[],int len)
{ printf("\n");printf("\n");int i;for(i=0;i<len;i++){printf("%ld %ld %f\n",stuArray[i].id,stuArray[i].course_id,stuArray[i].score);}
}
int main(){Stu stuArray[20],temp;int i,j,k,n;for(i=0;i<3;i++){ scanf("%ld %ld %f",&stuArray[i].id,&stuArray[i].course_id,&stuArray[i].score);}for(j=0;j<i-1;j++) //冒泡排序需要n-1次 { int flag = 0; //标记本趟冒泡排序是否有变换,如果没有移动,代表已经全部有序 for(k=i-1;k>j;k--) // 每趟冒泡排序都能确定一个元素的位置,所以不用每次都比较遍历整个数组 {// 先按照课程编号从小到大排序,再按照成绩从高到底的顺序进行排序if(stuArray[k].course_id<stuArray[k-1].course_id|| (stuArray[k].course_id==stuArray[k-1].course_id && stuArray[k].score>stuArray[k-1].score)){temp = stuArray[k];stuArray[k] = stuArray[k-1];stuArray[k-1] = temp;flag = 1;}}if(!flag){break; } }print(stuArray,i);return 0;
}
测试结果
第一列:学号
第二列:课程编号
第三列: 成绩
测试按照课程编号由小到大排序。
测试当课程编号相同,成绩由高到低排序。