lemon_syf
2018-10-18 23:16
#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=9; i>=0; i--)
{
for(j=0;j<=i;j++)
{
if(arr[j]>arr[i]) //当前面的数比后面的数大时
{
double temp; //定义临时变量temp
temp= arr[j]; //将前面的数赋值给temp
arr[j]=arr[i] ; //前后之数颠倒位置
arr[i]=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;
}
外层的i循环每次将数组里面最大的一个数排列到最后,第一遍循环是将10个数里面最大的排在最后一个,第二遍循环是将剩下的9个里面的排在倒数第二个,第三遍将剩下的8个数里面最大的排在倒数第三,以此类推。
这是一个大范围比较,arr[8]表示九个数,而十个数两两比较需要九次
我觉得是挺难理解的,你在数学上想想怎么排列就会懂了
C语言入门
927997 学习 · 21542 问题
相似问题
回答 3
回答 1