[英]Multipath recursion Maximum Value in Array
給定一個未排序的整數數組,我在編寫多路徑遞歸函數時遇到問題。
std::max(maxArray(a[],first,last))
我知道我需要將數組分成兩半並使用std::max
函數來比較兩個整數,例如:
return std::max(maxArray(a[],Not sure, Not Sure),maxArray(a[], Not sure, Not sure))
我熟悉二分搜索算法。 但是,我正在努力尋找如何在不比較數組左側和右側的兩個數字的情況下解決這個問題。 這兩個數字不會只返回比較的 2 中的較大者然后被丟棄嗎?
我看過其他關於這個問題的帖子,但是它不符合給出的偽代碼。 任何幫助將不勝感激。
我正在努力理解您對您不理解的內容的解釋。 但是你得到的代碼背后的原理是,如果你將一個數組分成兩半並(遞歸地)找到每一半的最大值,那么整個數組的最大值是這兩個值中較大的一個。
像這樣的東西
int maxArray(const int* a, int left, int right)
{
if (left == right)
{
return a[left];
}
else
{
int mid = (left + right)/2;
return std::max(
maxArray(a, left, mid),
maxArray(a, mid + 1, right));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.