我目前正在攻读考试,在我的一位教授的旧考试中,他给出了这个算法,应该对其进行分析...... 这是一个从1到2n-1的数组字段,n是2的幂,在任务a)中n等于8,给出8-15的密钥,我们将尝试算法并告诉他,m值是被退回。 我个人有m = 4,但我不确定它是对还是错,我更愿意去了解,算法做了什么...... 不幸的是,我只是有一个副本作为图像,无法在互联网上找到代码......
答案 0 :(得分:0)
我得出结论,while循环无限期地运行,因为f(1)
和f(2)
都等于2.所以m是f(3)
,确实是4。
在第一个for循环中,元素以两个为一组进行访问,较小的一个被分配给索引i
的相应元素,但尚未定义。在四次迭代之后,访问所有先前定义的数字,并且现在访问2个较小的数字(来自之前的执行)。此外,f
还可获取配对信息。
现在数组看起来像这样[2,2,4,3,2,5,4, 3,7,2,8,5,6,9,4]
注意:第一个元素和f(1)
始终是范围a[n...2n-1]
中最小的数字,其中n
是2的幂
比m
被定义为2或4中更大的一个(a [2]和[3]),显然是4. k
比f(1)更相同如在数组中:2(在if m
中被重新分配为4)
所以现在我提到的问题是k = 2
和f(k) = f(2) = 2 = k
k
从不大于n - 1
所需的问题突破while循环=>没有答案是答案;)