易采站长站为您分析C语言的冒泡排序和快速排序算法使用实例,示例题目也是ACM练习当中的基础习题,需要的朋友可以参考下
冒泡排序法
题目描述:
用一维数组存储学号和成绩,然后,按成绩排序输出。
输入:
输入第一行包括一个整数N(1<=N<=100),代表学生的个数。
接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。
输出:
按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。
如果学生的成绩相同,则按照学号的大小进行从小到大排序。
样例输入:
3
1 90
2 87
3 92
样例输出:
2 87
1 90
3 92
代码:
- #include <stdio.h> #include <stdlib.h>
- struct student
- { int number;
- int score; };
- int main()
- { struct student students[101];
- int n, i, j; struct student temp;
- while(scanf("%d",&n) != EOF)
- { //接收数据
- for(i = 0; i < n; i++) {
- scanf("%d%d",&students[i].number,&students[i].score); }
- //冒泡排序
- for(i = 0; i < n - 1; i ++) {
- for(j = 0; j < n - i - 1; j ++) {
- if(students[j].score > students[j + 1].score) {
- temp = students[j]; students[j] = students[j + 1];
- students[j + 1] = temp; }else if(students[j].score == students[j + 1].score)
- { if(students[j].number > students[j + 1].number)
- { temp = students[j];
- students[j] = students[j + 1]; students[j + 1] = temp;
- } }










