如何在递归分治解决方案中从buttom向上传递原始数组的索引?

问题描述 投票:0回答:1

我正在为硬件问题创建分治算法。给定一个数组,我需要找到最大值的索引(如果有多个索引,则为任何索引)。如果我想返回最高值,则我的解决方案有效,但是在尝试从堆栈的底部传递索引时遇到困难。每个级别的数组大小都不同。

    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
    }
java algorithm divide-and-conquer
1个回答
0
投票

[您将必须创建一个类对象,该对象将同时存储它们和要返回的所有对象,因此,创建一个将存储1个数组和1个整数的类-例如:

class ArrayDetails {
 int[] array;
 int index;
 ArrayDetaild(array, index) {
  this.array = array;
  this.index = index;
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.