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表示小数点后精确到两位
}
冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
emmmmm好像是这样的,比较出名的一个算法,
先输出原来的数组,然后使用冒泡排序,然后在输出排序之后的算法。
先使用一个for循环输出原来的数组
然后使用一个镶套的for循环运行冒泡排序
然后再用一个for循环输出排序之后的
内层j循环每次将两两比较中较大的数不断传递到下一个,最后将这一轮比较所得最大的数排列到最后,外层的i循环每次将上一轮循环去掉最大数后剩下的那组数中最大的数再次通过内层j循环传递到本轮末尾。即i循环第1轮,通过将j循环将10个数中最大的传递到最后一位;i循环第2轮,通过j循环将剩下9个数中最大数的传递到倒数第二位,以此类推。