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]- 当然不会那样做,但我不知道怎么能温度甚至可以与任何值进行比较.
它看起来像是temp一个变量.
它正在对你MAXB的函数进行递归调用:并将该调用的值存储在一个名为的变量中temp.
然后检查是否temp大于或等于A[r],如果大于或等于,则返回temp.如果它小于A[r]它返回A[r]
以下是整个功能的解释:
if p=r
then return A[p]
Run Code Online (Sandbox Code Playgroud)
如果p和r是相等的,比只有一个价值之间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]的最大值,因此是您想要返回的值.