// Find a maximum element in the array.
findMax(A)
findMaxHelper(A, 0, A.length)
findMaxHelper(A, left, right)
if (left == right - 1)
return A[left]
else
max1 = findMaxHelper(A, left, (right + left) / 2)
max2 = findMaxHelper(A, (right + left) / 2, right)
if (max1 > max2)
return max1
else
return max2
我很难理解此伪代码中发生了什么。
有人可以帮忙解释每一行发生了什么。在回答问题之前,我需要了解此代码。
我知道函数findMax调用帮助程序函数findMaxHelper,然后findMaxHelper使用递归。除此之外,我真的不明白。
最佳答案
您正在使用Divide and Conquer算法从数组中查找最大元素。首先,将数组划分为单个元素(除法),然后将元素进行比较(征服)。您正在使用递归调用findMaxHelper
分割数组。
图中显示了“分而治之”的总体思路:
示例:
此处max
与您的findMaxHelper
函数相同,带有两个参数,即left
和right
。
查看this示例,以更深入地了解该概念。
关于arrays - 通过递归查找数组中的最大值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13117159/