c - C中的冒泡排序为零

标签 c bubble-sort

所以,我第一次在 C 中尝试冒泡排序,我的代码可以正常工作,但如果我输入 0 作为输入,排序会使其他所有内容都为 0。我不知道我的代码有什么问题。谢谢你。

/* Double-Click To Select Code */


#include<stdio.h>

void main()
{
 int w,f,temp,j;
 float arr[25];

 printf("Enter the number of elements in the Array: ");
 scanf("%d",&f);
 printf("\nEnter the elements:\n\n");

 for(w=0 ; w<f ; w++)
 {
  printf(" Array[%d] = ",w);
  scanf("%f",&arr[w]);
 }


for(w=0 ; w<f ; w++)
{
    for(j=0 ; j<f-w-1 ; j++)
    {
    if(arr[j]>arr[j+1]) //Swapping Condition is Checked
        {
        temp=arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=temp;
        }
    }
}
printf("\nThe Sorted Array is:\n\n");
for(w=0 ; w<f ; w++)
    {
    printf(" %4f",arr[w]);
    }
}

如果我输入说,
1.000
0.333
0

输出将是:0.000 0.000 1.000

最佳答案

我测试过。只需将 temp 的类型更改为 float 即可。这是有效的;

#include<stdio.h>

void main()
{
     int w,f,j;
     float arr[25],temp;

     printf("Enter the number of elements in the Array: ");
     scanf("%d",&f);
     printf("\nEnter the elements:\n\n");

     for(w=0 ; w<f ; w++)
     {
      printf(" Array[%d] = ",w);
      scanf("%f",&arr[w]);
     }


    for(w=0 ; w<f ; w++)
    {
        for(j=0 ; j<f-w-1 ; j++)
        {
        if(arr[j]>arr[j+1]) //Swapping Condition is Checked
            {
            temp=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=temp;
            }
        }
    }
    printf("\nThe Sorted Array is:\n\n");
    for(w=0 ; w<f ; w++)
        {
        printf(" %4f",arr[w]);
        }
    system("pause");
}

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

相关文章:

c - 排序**矩阵结构

c - 如何在 C 中对字符串进行切片?

c++ - 如何在 C/C++ 源代码中使用函数 typedef?

c - 将内存释放到C中的二维数组

algorithm - 冒泡排序算法 while 循环功能

c - 为什么这个 GtkFrame 没有边框?

c - 为什么删除pipe文件后还能通信?

java - 这是正确的冒泡排序算法吗?

java - 手动对 Java 中的链表进行冒泡排序