gpt4 book ai didi

c - 请解释一下 C 语言的 shellsort 代码

转载 作者:行者123 更新时间:2023-11-30 19:19:29 24 4
gpt4 key购买 nike

这段代码是由 Ritchie 用 ANSI C 编写的......我在这段代码中使用了我怀疑的注释。我还从 youtube 上学习了 shell 排序,并理解了它实际上是如何工作的,但是这段代码非常令人困惑,特别是这些循环......为什么他们使用间隙= n/2 ......什么是间隙?这些循环在这里做什么......Plz :(

void shellsort(int v[], int n) 
{
int gap, i, j, temp;

for(gap= n/2; gap >0; gap /=2) // What is this gap /=2
for(i=gap; i<n; i++)
for(j= i-gap; j>= 0 && v[j]>v[j+gap]; j -=gap){
temp= v[j];
v[j]=v[j+gap];
v[j+gap]=temp;
}
}

最佳答案

您正在阅读这本书的哪个版本?我认为直到第三版为止,示例代码中一直存在许多编程错误。

gap 指的是您在 for 循环上方声明的 int。与间隙一样,i、j 和 temp 也是整数。这意味着它们保存整数数值(例如 1,2, 12, 586 等)。

a/= b 是除法赋值,所以它的字面意思是 a = a/b。

您可能还想知道 v 和 n 是什么?

int v[] 指的是 int 数组,因此 [ ] 内使用的任何值都是该数组的索引,例如 v[0]、v[1]、v[2]、v[n].. .

由于 v 和 n 被声明为 shellsort 函数的参数,这意味着当您调用该函数时,需要传递一个 int 数组值和一个 int 值。如果没有这些值,函数将无法正常运行

如果您有 C 书,那么您需要了解的有关 C 的所有内容都将在那本书中:)

关于c - 请解释一下 C 语言的 shellsort 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24282057/

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