gpt4 book ai didi

c - 如何提高冒泡排序的最佳案例效率? (输入已经排序)

转载 作者:太空宇宙 更新时间:2023-11-04 04:12:23 25 4
gpt4 key购买 nike

我已经试过了,但是我无法理解错误...

boolean swapped = true;
for(int j=arr.length-1; j>=0 && swapped; j--)
{
swapped = false;
for(int k=0; k<j; k++)
{
if(arr[k] > arr[k+1])
{
int temp = arr[k];
arr[k] = arr[k+1];
arr[k+1] = temp;
}
}
}

bool 变量“swapped”决定是否有任何交换发生在特定的迭代,如果没有发生交换,则给定的数组被排序并且没有需要更多的迭代。

最佳答案

正如我在评论中提到的,您的代码似乎是 Java 代码而不是 C。C 和 Java 语法非常相似,但也有一些差异。一个是默认情况下 C 没有 bool 类型,您必须包含 header stdbool.h ,如@Weather Vane 所述。确保将 boolean 类型更改为 bool 以符合 C 语法:

bool swapped = true;

另一件事是 C 数组不像 Java 数组那样具有属性 length。您可以使用 sizeof 函数代替 C 语言获取数组长度:

size_t arr_length =  sizeof(arr)/sizeof(arr[0]);

更新:正如@Weather Vane 在评论中提到的,确保您初始化数组并在同一函数内获取它的长度,以便 sizeof 函数正常工作。如果将数组传递给函数,则无法使用 sizeof 获取其长度,因为它只有指针 int * 的大小,而不是数组 int [].

关于c - 如何提高冒泡排序的最佳案例效率? (输入已经排序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55782648/

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