我目前正在用C语言操作数组,我有点困惑为什么dim - 1常用于数组相关的操作。如果 dim 指定数组中的数据量,使用 dim - 1 是否可能会导致我丢失一个元素?
例如,在冒泡排序算法的上下文中,通常使用:
for (int i = 0; i < dim - 1; i++)
。
这个约定有什么具体原因吗?
将索引初始化为 1 或将其设置为 dim - 1 是否会丢失元素?
我尝试不使用此约定,它似乎工作相同,但它被标记为不正确。
你是对的。对大小为
dim
的数组的每个元素执行或检查某些操作的常见循环通常被编程为 for (int i = 0; i < dim; i++)
,这会让您每次迭代一次,并且 i
的值适合寻址每个数组元素。 (当然是从 0 开始,即从索引 0 开始。)
但是许多算法,特别是您提到的冒泡排序,都会查看每对可能的相邻元素。 IE。您在整个数组中查看每个
i
和 i+1
作为索引。但这样做时,您需要在最后一个通常可用的 i
(即 dim-1
)之前停止,因为您不能将 dim -1 +1
用于最后一对的其他部分。所以最后一对是 dim-2
和 dim-1
。i
和 i+1
并最终使用 dim-2
和 dim-1
的循环是
for (int i = 0; i < dim - 1; i++)
所以这就是原因。
(这与詹姆斯·K·波尔克总统的评论非常接近,但我认为将评论转化为答案是可以的,并且我大大扩展了它。此外,我在意识到该评论的存在之前输入了内容,但这可能不太重要一个借口...:-) )