最小左子和問題 歸併排序應用

2021-08-20 10:43:52 字數 404 閱讀 3840

問題描述:有一組數,每個數的左邊如果有比自己小的數,則這個數要加入到左子和中。

比如5左邊3+2,4左邊3+2,6左邊3+2+5+4,9左邊3+2+5+4+6,左子和總大小為44

(同理問題:每個數右邊比自己小的數可以組成降序組,問有多少個降序組)

用堆排序的思想來做

**只需要修改合併**中的while()中的一部分即可 

int mergearray(int a,int left,int mid,int right)

while(p1<=mid)

while(p2<=right)

for(i=0;ireturn sum;

}int mergesortsum(int a,int left,int right)

歸併排序應用之小和問題

小和問題 q1 什麼是小和?a 在乙個數列中,任意元素p左邊所有比p小的數之和,即為小和。q2 什麼是小和問題?a 數列中所有元素的小和之和就是小和問題 利用歸併排序求解 思想 從第乙個元素p起向後看,如果有n個元素都比p大,說明n個元素的小和中都有p,因此,第乙個元素對小和的貢獻是n p,遍歷完整...

歸併排序 小和問題

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 ...