Faster Algorithm for JavaScript function call within a function

前端 未结 3 1161
野的像风
野的像风 2021-01-17 06:19

I have written a function and called another function inside but my tests show that it is not time optimized. How can I make the following code faster?

    f         


        
3条回答
  •  庸人自扰
    2021-01-17 06:59

    Algorithmic optimization: create new array with cumulative sums from index 0 to every index

    cumsum[0] = 0;
    for (var i = 1; i <= arr.Length; i++) {
      cumsum[i] = cumsum[i-1] + arr[i-1]
    

    Now you don't need to calculate sums for every range - just get difference

     sum for range (i..j) = cumsum[j+1] - cumsum[i];
    

    in your terms:

        function sumAll(array1, myrange) {
                return cumsum[myrange[1]+1] - cumsum[myrange[0]];
        }
    

    example:

    arr = [1,2,3,4]
    cumsum = [0,1,3,6,10]
    sum for range 1..2 = 6 - 1 = 5
    

    P.S. If your array might be updated, consider Fenwick tree data structure

提交回复
热议问题