如果dim指定数组中的数据量,使用dim - 1是否可能会导致我丢失一个元素?

问题描述 投票:0回答:1

我目前正在用C语言操作数组,我有点困惑为什么dim - 1常用于数组相关的操作。如果 dim 指定数组中的数据量,使用 dim - 1 是否可能会导致我丢失一个元素?

例如,在冒泡排序算法的上下文中,通常使用:

for (int i = 0; i < dim - 1; i++)
。 这个约定有什么具体原因吗? 将索引初始化为 1 或将其设置为 dim - 1 是否会丢失元素?

我尝试不使用此约定,它似乎工作相同,但它被标记为不正确。

arrays c bubble-sort
1个回答
2
投票

你是对的。对大小为

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·波尔克总统的评论非常接近,但我认为将评论转化为答案是可以的,并且我大大扩展了它。此外,我在意识到该评论的存在之前输入了内容,但这可能不太重要一个借口...:-) )

© www.soinside.com 2019 - 2024. All rights reserved.