我正在尝试使用分治算法查找数组中最大元素的索引。目前,输出正确地输出了我的数组的最大值,但我无法弄清楚如何传递该最大元素的位置。
#include <iostream>
using namespace std;
int maxElement(int a[], int l, int r) {
if(r - l == 1) {
cout << "R - L == 1 " << "Array value: " << a[l] << " Pos: " << l << endl;
return a[l];
}
int m = (l + r) / 2;
int u = maxElement(a, l, m);
int v = maxElement(a, m, r);
return u > v ? u : v;
}
/* Driver program to test above functions */
int main() {
int Arr[] = {1, 4, 9, 3, 4, 9, 5, 6, 9, 3, 7};
int arrSize = sizeof(Arr)/sizeof(Arr[0]);
cout << maxElement(Arr, 0, arrSize) << endl;
return 0;
}
a[l]
,而是返回l
。然后,u
和v
变成了最大元素的索引。可以进行比较并返回a[u]>a[v]?u:v
。 - TruthSeeker