话说,小明(咋又是他)班级年终考试成绩出来了,老师看着这一堆的数,犯愁了,我怎么找最高的分数呢。。。
那么有数组在就好办多了,我们可以将所有的成绩放到数组中,然后用数组排序一下,就可以找到最高的分了;话又说回来了,数组排序?数组咋排序?别着急往下看。
排序的方法呢有很多,这里小编给大家介绍一种比较经典且比较容易掌握的排序方法:冒泡排序。
以升序排序为例冒泡排序的思想:相邻元素两两比较,将较大的数字放在后面,直到将所有数字全部排序。就像小学排队时按大小个排一样,将一个同学拉出来和后面的比比,如果高就放后面,一直把队伍排好。
班级成绩中,老师把前十名的挑出来了,用冒泡排序把分数排了一下
运行结果为
#include <stdio.h> int main() { double arr[]={1.78, 1.77, 1.82, 1.79, 1.85, 1.75, 1.86, 1.77, 1.81, 1.80}; int i,j; printf("\n************排队前*************\n"); for(i=0;i<10;i++) { if(i != 9) printf("%.2f, ", arr[i]); //%.2f表示小数点后精确到两位 else printf("%.2f", arr[i]); //%.2f表示小数点后精确到两位 } for(i=8; i>=0; i--) { for(j=0;j<=i;j++) { if( ? ) //当前面的数比后面的数大时 { double temp; //定义临时变量temp ? //将前面的数赋值给temp ? //前后之数颠倒位置 ? //将较大的数放在后面 } } } printf("\n************排队后*************\n"); for(i=0;i<10;i++) { if(i != 9) printf("%.2f, ", arr[i]); //%.2f表示小数点后精确到两位 else printf("%.2f", arr[i]); //%.2f表示小数点后精确到两位 } return 0; }