小和問題 歸併排序解法

2021-10-03 23:21:51 字數 703 閱讀 7195

在乙個陣列中,每乙個數左邊比當前數小的數累加起來,叫做這個陣列的小和。求乙個陣列 的小和。

例子:[1,3,4,2,5] 1左邊比1小的數,沒有; 3左邊比3小的數,1; 4左邊比4小的數,1、3; 2左邊比2小的數,1; 5左邊比5小的數,1、3、4、2; 所以小和為1+1+3+1+1+3+4+2=16

解題思路: 求乙個數左邊比它小的數的和,等於求這個陣列中,當前數 * 當前數右邊比它大的數的個數.

利用歸併排序解題,**如下:

public class smallsum 

return smallsum(arr,0,arr.length -1);

}public static int smallsum(int arr, int l,int r)

int mid = l + ((r - l) >> 1);

return smallsum(arr,l,mid) + smallsum(arr,mid + 1 , r) + merge(arr,l,mid,r);

}public static int merge(int arr, int l, int m, int r)

while(p1 <= m)

while(p2 <= r)

for (i = 0; i < temp.length ; i ++)

return res;

}}

歸併排序 小和問題

public class mergesort sortprocess arr,0,arr.length 1 遞迴 public static void sortprocess int arr,int l,int r int mid l r l 1 sortprocess arr,l,mid t n ...

歸併排序 小和問題

問題描述 在乙個陣列中,每乙個數左邊比當前數小的數累加起來,叫做這個陣列的小和。求乙個陣列的小和。樣例 1,3,4,2,5 1左邊比1小的數,沒有 3左邊比3小的數,1 4左邊比4小的數,1 3 2左邊比2小的數,1 5左邊比5小的數,1 3 4 2 所以小和為1 1 3 1 1 3 4 2 16 ...

小和問題 歸併排序

在乙個陣列中,每乙個數左邊比當前數小的數累加起來,叫做這個陣列的小和。例子 輸入 1,3,4,2,5 輸出 16 1左邊比1小的數,沒有 3左邊比3小的數,1 4左邊比4小的數,1 3 2左邊比2小的數,1 5左邊比5小的數,1 3 4 2 所以小和為1 1 3 1 1 3 4 2 16實現的基本原...