我正在为硬件问题创建分治算法。给定一个数组,我需要找到最大值的索引(如果有多个索引,则为任何索引)。如果我想返回最高值,则我的解决方案有效,但是在尝试从堆栈的底部传递索引时遇到困难。每个级别的数组大小都不同。
int findLargestPos(int[] arr) {
int n = arr.length;
int mid = (int)Math.floor(arr.length / 2);
if (arr.length <= 1) {
return 0;
}
int[] arr2 = new int[mid];
int[] arr3 = new int[arr.length - mid];
copyArr(arr, arr2, 0, 0);
copyArr(arr, arr3, mid, 0);
int index1 = findLargestPos(arr);
int index2 = findLargestPos(arr);
// Problem starts
if (value from arr2 is greater than arr3) {
return arr2 index
}
return arr3 index
}
[您将必须创建一个类对象,该对象将同时存储它们和要返回的所有对象,因此,创建一个将存储1个数组和1个整数的类-例如:
class ArrayDetails {
int[] array;
int index;
ArrayDetaild(array, index) {
this.array = array;
this.index = index;
}
}