简单的伪代码问题

时间:2010-08-29 15:07:32

标签: pseudocode

我对伪代码有点新意。我理解代码说的是什么,但很难把各个部分放在一起。我应该如何思考这段代码的作用:

假设a1,a2 ,. 。 。 ,ak是一个k数组。以下是什么 代码片段呢?简要解释原因。假设所有的缩进行 属于循环内部。

1 for p := 1 to ⌊k/2⌋
2     t := ap
3     ap := ak−p+1
4     ak−p+1 := t

2 个答案:

答案 0 :(得分:2)

Ookay,

1 for p := 1 to ⌊k/2⌋

意思是,我们要上升到阵列的一半。

2 t := ap
3 ap := ak−p+1
4 ak−p+1 := t

此模式可以被识别为“与临时t交换”。什么是交换?

好吧,apak-p+1,其中一个是数组开始的 p元素,另一个是 {{1 - 结尾的一个

所以,总结一下

您将p - 第一个与n - 最后一个数组值交换到数组的一半。然后呢? 数组颠倒

请注意,您的伪代码格式看起来很奇怪 - 而且最重要的是 - 模糊不清。

n是等同于ak-p+1还是a[k-p+1]a[k]-p+1?如果没有,你是如何表达其他的。

首先,我会将此代码转换为Python的实际源代码,这样更容易阅读。

修改

I)嗯,正如您发布的那样,数组范围从a[k-p]+1a1

II)考虑如何交换两个变量(aka)的值:

b

当然,由于您在行 2 中用1 temp := a 2 a := b 3 b := temp 覆盖了a,因此您必须将旧b值存储在临时值中,即{ {1}}。

答案 1 :(得分:0)

循环将数组镜像到其中心元素,因为它用[k-p + 1]改变[p],其中[p]总是在数组的“左”侧,并且[k-p +1]始终在“右侧”。 t是一个临时变量。