为了账号安全,请及时绑定邮箱和手机立即绑定

C语言求解答

C语言求解答

C
群主么么哒 2016-03-24 10:20:48
#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(j=0;j<=9;j++)        {            if(arr[j]>arr[j+1])      //当前面的数比后面的数大时            {               double temp;    //定义临时变量temp                temp=arr[j];    //将前面的数赋值给temp                arr[j]=arr[j+1];              //前后之数颠倒位置                arr[j+1]=temp;                 }             else            {}        }                        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;    }这样为什么不是冒泡排序
查看完整描述

2 回答

已采纳
?
qq___524

TA贡献171条经验 获得超74个赞

void bubble_sort(int a[], int n)
{
    int i, j, temp;
    for (j = 0; j < n - 1; j++)
        for (i = 0; i < n - 1 - j; i++)
        {
            if(a[i] > a[i + 1])
            {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }
}

这是冒泡排序,两层循环

查看完整回答
2 反对 回复 2016-03-24
?
Realank刘

TA贡献7条经验 获得超36个赞

冒泡是两层for循环,你这个只有一层循环,一梳理了一次

查看完整回答
1 反对 回复 2016-03-24
  • 群主么么哒
    群主么么哒
    可是我不知道我这个为什么不能排序
  • Realank刘
    Realank刘
    你打印一下执行前后数组各个数字的位置,你就明白了,执行一遍,只能把数组相邻的值按顺序交换,但如果十个长度的数组,最大值在第五个位置,你这个代码,只能让这个值挪到第六个位置
  • 2 回答
  • 0 关注
  • 1400 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信