gpt4 book ai didi

java - 我将如何为这个不变量写一个循环?

转载 作者:行者123 更新时间:2023-11-30 09:38:13 35 4
gpt4 key购买 nike

这些是用于查找数组 b[h.k] 的最小值的算法的断言:

Precondition: h <= k < b.length
Postcondition: b[x] is the minimum of b[h...k]

对于这个不变量,这是正确的循环吗?

不变量:b[x] 是 b[h...t] 的最小值

int x = t;    int t = h;
// {inv: b[x] is the minimum of b[h...t]}
while (t != k) {
t = t+1;
if (b[t] < b[x])
{ x = t;}
}

最佳答案

你可以通过这种方式找到数组的最小值(伪代码):

// assume b.length > 0
min = b[0]
for i=1 to b.length
if b[i] < min
min = b[i]

将其限制为 b[h, ..., k] :

min = b[h]
for i=h+1 to k
if b[i] < min
min = b[i]

所以你基本上只是改变循环的上限和下限

h<=k<b.length , b[h]有效并从下一个元素执行循环直到 k遍历 reqiured 元素(如果 h==k ,循环为空)

更新:由于您一直无法将伪代码实现为 java,我会为您翻译:

// assume: int b[]; int h; int k; h<=k<=b.length and b.length>0
// find min == b[i] such that b[i]<=b[j] for all h<=j<=k
int min = b[h];
for (int i=h+1; i<k; i=i+1) {
if (b[i] < min) {
min = b[i];
}
}
// here: min contains the (first) minimum element within b[h, ..., k]

注意:你可以写成i=i+1作为++i还有

关于java - 我将如何为这个不变量写一个循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10202004/

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