gpt4 book ai didi

c++ - 数组在方括号中增加元素是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 23:35:24 27 4
gpt4 key购买 nike

在下面的合并排序算法中,在第 3 个定义中,第一个 while 循环有:

a[k++] = (a[j] < b[i]) ? a[j++] : b[i++].

我理解RHS是一个条件语句,如果满足第一个操作数,则执行第二个操作数,如果不满足,则执行第三个操作数。

a[k++]a[j++]b[i++]分别对应什么元素?

根据我的理解,这应该意味着在每个连续的 while 循环中,元素都会递增。

即。从第一个 while 循环的初始化值 (i=1, j=m+1, k=1) 开始,下一个 while循环将由 (i=2, j=m+2, k=2) 等组成。

这是整个算法:

# split in half
m = n / 2

# recursive sorts
sort a[1..m]
sort a[m+1..n]

# merge sorted sub-arrays using temp array
b = copy of a[1..m]
i = 1, j = m+1, k = 1
while i <= m and j <= n,
a[k++] = (a[j] < b[i]) ? a[j++] : b[i++]
→ invariant: a[1..k] in final position
while i <= m,
a[k++] = b[i++]
→ invariant: a[1..k] in final position

最佳答案

a[k] 获取数组 a 的第 k 个元素。

k++ 增加 k 的值,但返回之前的值。

因此,a[k++] 返回 a[k] 并在 k > 返回 a[k] 的值。 a[k++] = 4 等同于:

a[k] = 4
k = k + 1

另一方面,++k 会在返回之前增加 k,所以 a[++k] = 4 会是

k = k + 1
a[k] = 4

关于c++ - 数组在方括号中增加元素是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998264/

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