gpt4 book ai didi

c - 在 C 中填充数组时对数组进行排序

转载 作者:行者123 更新时间:2023-11-30 18:49:43 25 4
gpt4 key购买 nike

我对这段代码有一个问题:当我输入负值作为输入程序的第一个值时,将其替换为 0。如果我在其他任何地方输入它,它工作正常。为什么会出现这样的情况呢?我该如何修复它?提前致谢!

#include <stdio.h>
#define N 5

int main () {
float a[N], temp;
int i, j;

for (i=0; i<N; i++) {
scanf ("%f", &a[i]);
for (j=0; j<N; j++)
if (a[i]<a[j]) {
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
for (i=0; i<N; i++)
printf ("%.2f ", a[i]);

return 0;
}

最佳答案

你们很接近。正如其他人提到的,问题是 a未初始化,因此在您填充之前它充满了垃圾。但如果你初始化它,它将充满零,这会扰乱排序。

诀窍是仅对您已填充的位置进行排序。那将是 i .

for (i=0; i < N; i++) {
scanf ("%f", &a[i]);
for (j=0; j < i; j++) {
if (a[i]<a[j]) {
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}

注意它是j < i 。这不是j <= i因为将元素与其自身进行比较是没有意义的

顺便说一句,这是一种低效的排序方式。基本上是bubble sort ,但与冒泡排序不同,如果数组已排序,冒泡排序可能会提前停止,您将始终执行 ((n-1)*n)/2快速变大的操作。在 100 个元素中,您将进行 4950 次比较。

您最好阅读所有内容并对整个列表进行排序。

关于c - 在 C 中填充数组时对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42035954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com