Algorithm 最大子阵列问题蛮力复杂性

Algorithm 最大子阵列问题蛮力复杂性,algorithm,complexity-theory,brute-force,Algorithm,Complexity Theory,Brute Force,使用暴力的运行时/内存复杂性是多少 它们可以更优化吗?特别是记忆的复杂性 谢谢,蛮力是ω(n^2)。使用分而治之,你可以用θ(n lgn)复杂度来完成。更多详细信息可在许多书籍中找到,如,或在网络上的各种资源中找到,如。如本文所述,您可以使用具有O(n)复杂性的Kadane算法。Java实现: public int[] kadanesAlgorithm (int[] array) { int start_old = 0; int start = 0;

使用暴力的运行时/内存复杂性是多少

它们可以更优化吗?特别是记忆的复杂性

谢谢,

蛮力是ω(n^2)。使用分而治之,你可以用θ(n lgn)复杂度来完成。更多详细信息可在许多书籍中找到,如,或在网络上的各种资源中找到,如。

如本文所述,您可以使用具有O(n)复杂性的Kadane算法。Java实现:

public int[] kadanesAlgorithm (int[] array) {
        int start_old = 0;
        int start = 0;
        int end = 0;
        int found_max = 0;

        int max = array[0];

        for(int i = 0; i<array.length; i++) {
            max = Math.max(array[i], max + array[i]);
            found_max = Math.max(found_max, max);
            if(max < 0)
                start = i+1;
            else if(max == found_max) {
                start_old=start;
                end = i;
                }
        }

        return Arrays.copyOfRange(array, start_old, end+1);
    }
public int[]kadanesAlgorithm(int[]array){
int start_old=0;
int start=0;
int end=0;
找到的int_max=0;
int max=数组[0];

对于(int i=0;算法也在您链接的页面上,因此您可以检查该页面以获得答案?页面中的算法不是通过蛮力实现的。它是一个O(n)和O(1)空间算法。事实上,我对这个具体问题不感兴趣。只是对这个问题的蛮力方法的复杂性分析类似于CS中的许多其他问题。考虑到你必须至少检查一次数组中的每个项,不可能比O(n)做得更好。而且,由于您必须保持一个运行总数,因此至少需要O(1)个额外空间。我认为该算法无法改进。但是,几乎可以肯定地优化实现。查找最大和的暴力算法具有
O(n**3)
complexity,请参阅,因此可以合理地假设,寻找最大子阵列的蛮力具有更好的复杂性。