C语言的冒泡排序和快速排序算法使用实例

2020-01-06 13:40:40于丽

易采站长站为您分析C语言的冒泡排序和快速排序算法使用实例,示例题目也是ACM练习当中的基础习题,需要的朋友可以参考下

冒泡排序法

题目描述:

用一维数组存储学号和成绩,然后,按成绩排序输出。

输入:

输入第一行包括一个整数N(1<=N<=100),代表学生的个数。

接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。

输出:

按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。

如果学生的成绩相同,则按照学号的大小进行从小到大排序。

样例输入:

3

1 90

2 87

3 92

样例输出:

2 87

1 90

3 92

代码:

 

 
  1. #include <stdio.h>   #include <stdlib.h>  
  2.   struct student  
  3. {   int number;  
  4. int score;   };  
  5.   int main()  
  6. {   struct student students[101];  
  7. int n, i, j;   struct student temp;  
  8.   while(scanf("%d",&n) != EOF)  
  9. {   //接收数据  
  10. for(i = 0; i < n; i++)   {  
  11. scanf("%d%d",&students[i].number,&students[i].score);   }  
  12.   //冒泡排序  
  13. for(i = 0; i < n - 1; i ++)   {  
  14. for(j = 0; j < n - i - 1; j ++)   {  
  15. if(students[j].score > students[j + 1].score)   {  
  16. temp = students[j];   students[j] = students[j + 1];  
  17. students[j + 1] = temp;   }else if(students[j].score == students[j + 1].score)  
  18. {   if(students[j].number > students[j + 1].number)  
  19. {   temp = students[j];  
  20. students[j] = students[j + 1];   students[j + 1] = temp;  
  21. }   }