c - C中的冒泡排序 float

标签 c floating-point bubble-sort

我使用冒泡排序 1.00 20.00 3.30 4.50 5.20 6.10 7.80 8.10 9.14 0.67 我最终得到

0.00 1.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 20.00

这是我的代码

main()
{
int i,n = 10,j,value=0;
float median=0;
float a[10] = {1,20,3.3,4.5,5.2,6.1,7.8,8.1,9.14,0.67};
for(i= 0; i< 10; i++) {
    printf("%.2f  ", a[i]);
}
printf("\n\n");
for(i=0;i<n-1;i++)
{
    for(j=0;j<n-i-1;j++)
    {
        if(a[j]>a[j+1])
        {
            value=a[j+1];
            a[j+1]=a[j];
            a[j]=value;
        }
    }
}
for(i= 0; i< 10; i++) {
    printf("%.2f  ", a[i]);
}
}

谁能告诉我我做错了什么以及为什么我在完成排序后丢失了小数点后的所有数字。

附言我正在使用在线编译器 http://www.compileonline.com/compile_c_online.php .

最佳答案

valueint 而不是 float

int i,n = 10,j,value=0;

你在循环中得到截断的值:

 value=a[j+1];
 a[j+1]=a[j];
 a[j]=value;

让它float value=0.0f;

关于c - C中的冒泡排序 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20095219/

相关文章:

c - 共享内存中数组的长度是多少?

dup2 后自定义 shell 停止工作

c - 获取字符串 YACC 中间的 char

perl - 如何计算 float 的 div 和 mod?

iphone - 根据frame.origin.y 对 TextFields 的 IBOutletCollection 数组进行排序

c - 使用虚拟 shell 时,如何检测用户是否在程序和参数后输入 '&'?

c++ - C++ 如何将 int 舍入为 float/double?

c++ - 计算这个平方根时,什么被认为是 IEEE-754 正确的结果?

c - 为什么每次迭代时冒泡排序都不能正确打印?

c - 如何使用冒泡排序或选择排序对指针数组中的数组进行降序排序?