在伪代码中使用'temp'

Stu*_*ath 1 arrays algorithm pseudocode

我试着在这里研究,一般在互联网上,但由于伪代码写作相当多样化,许多人使用不同的符号来表达不同的东西,我找不到任何可能适合我的问题.

给定以下内容:序列n的数组A(不一定已经排序),索引p,r使得1 <= p <= r <= n;

我得到了以下递归算法(伪代码),我想知道它中的具体两行(粗体)是什么意思:

MAXB(A,P,R)

如果p = r

然后返回A [p]

其他温度<----- MAXB(A,p,r-1)

如果temp> = A [r]

然后回温

否则返回A [r]

我并不完全理解使用'temp'完成的过程.如果它改变MAXB(A,p,r)MAXB(A,p,r-1)如何与它的价值进行比较A[r]?我知道算法肯定不会做它应该做的事情,根据描述:返回具有最高值的项目的索引,之间A[p]A[r]- 当然不会那样做,但我不知道怎么能温度甚至可​​以与任何值进行比较.

Sam*_*ica 5

它看起来像是temp一个变量.


它正在对你MAXB的函数进行递归调用:并将该调用的值存储在一个名为的变量中temp.

然后检查是否temp大于或等于A[r],如果大于或等于,则返回temp.如果它小于A[r]它返回A[r]

__ _ __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

以下是整个功能的解释:

if p=r
    then return A[p]
Run Code Online (Sandbox Code Playgroud)

如果pr是相等的,比只有一个价值之间A[p]A[r],因此,一个值是最大的,并返回该值.

else 
    temp<-----MAXB(A,p,r-1)
Run Code Online (Sandbox Code Playgroud)

您使用自己的函数,MAXB以获得A[p]和之间的最大价值A[r-1],并将其存储在temp

if temp>=A[r]
    then return temp
else 
    return A[r]
Run Code Online (Sandbox Code Playgroud)

你比较之间最大的价值A[p]A[r-1]A[r].无论哪个更大,都必须是A[p]和之间A[r]的最大值,因此是您想要返回的值.