例:
[ 6 3 2 1 6 7]
每個數左邊,比它小的數累加起來
0 0 0 0 6 18
所有的小和全部加起來 = 24
o(n^2)的做法:
1、迴圈到某個數,遍歷它的左邊,把它左邊小於這個數的數全部加起來
2、從頭到尾迴圈一遍
3、最後算總的和。
用歸併的思想讓時間複雜度變成o(n * logn)
利用的是megesort的實質:
1、通過遞迴,將陣列不斷劃分,知道左右都為1個時
2、利用merge的過程,遵循:
2.1、誰小拷貝誰;
2.2、相等先拷貝左邊的;
2.3、右組小,拷貝右組數時,不產生小和,同時將左組數拷貝過來;
2.4、左組小,拷貝左組數時,看一下目前右組有多少個數比它大,產生小和;
C C 問題 B C語言11 2
定義乙個結構體student,儲存學生的學號 名字 性別和年齡,讀入每個學生的所有資訊,儲存在結構體中,並輸出。結構體student的定義如下 struct student 本題要求使用指向結構體陣列的指標進行輸入和輸出。第一行有乙個整數n,表示以下有n個學生的資訊將會輸入。保證n不大於20。以後的...
小和問題和逆序對問題
在乙個陣列中,每乙個數左邊比當前數小的數累加起來,叫做這個陣列的小和。求乙個陣列的小和。例如 對於陣列 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 ...
結構體 問題 B C語言11 2
定義乙個結構體student,儲存學生的學號 名字 性別和年齡,讀入每個學生的所有資訊,儲存在結構體中,並輸出。結構體student的定義如下 struct student 要求使用指向結構體陣列的指標進行輸入和輸出。第一行有乙個整數n,表示以下有n個學生的資訊將會輸入。保證n不大於20。以後的n行...