gpt4 book ai didi

c - 在 C 中对数组中的值进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:16 24 4
gpt4 key购买 nike

我对编程很陌生。对于一项任务,我必须创建一个可以按升序对数组进行排序的函数。我写了一个函数,但是它不能完全工作。我已经在这个论坛上阅读了很多关于此类案例的问题(例如搜索冒泡排序),但是我仍然无法解决我的问题。

我的代码:

void sortOnValue(float *values, int size) 
{
int i, d;
float swap;

for (i = 0; i < (size - 1); i++)
{
for (d = 0; d < (size - 1 - i); d++);
{
if (values[d] > values[d+1])
{
swap = values[d];
values[d] = values[d+1];
values[d+1] = swap;
}
}
}
}

void main()
{
int i;
float x, y;
float val[10]; //1.5, 2.2, 7.3, 9.2, 7.4, 7.5, -8.0, 1.5, 12
val[0] = 1.5;
val[1] = 2.2;
val[2] = 7.3;
val[3] = 9.2;
val[4] = 7.4;
val[5] = 7.5;
val[6] = -8.0;
val[7] = 1.5;
val[8] = 12;

printValues(val, 10);
sortOnValue(val, 10);
printValues(val, 10);
}

我的输出:

Values:  1.500 -8.000 2.200 7.300 9.200 7.400 7.500 0.000 1.500 12.000

知道为什么它不起作用吗?我认为这可能是因为循环提前结束,但我不确定。另外,有没有比我做的更有效的数组赋值方法?

在此先感谢您的帮助!

最佳答案

仔细观察这一行:

   //              what's this? -------v
for (d = 0; d < (size - 1 - i); d++);
{

在这个 for 的末尾有一个分号。结果,您在这里得到的是一个空循环。然后它下面的 block 每次都运行。

去掉它,程序按预期运行。

作为一种风格问题,将 block 的左大括号与开始它的语句放在同一行是一个很好的做法,如下所示:

   for (d = 0; d < (size - 1 - i); d++) {

这有助于减少此类事件发生的可能性。

另外,如果你想初始化一个数组,你可以这样做:

float val[10] = { 1.5, 2.2, 7.3, 9.2, 7.4, 7.5, -8.0, 1.5, 12, 9.9 };

请注意,之前您并未初始化数组中的所有 10 个元素。我在这里又添加了一个元素来填充整个内容。

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

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