题目描述
求在一个数组中, 每一个数左边比当前数小的数累加起来, 叫做这个数组的小和。
如给定数组[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:暴力解
解法2:归并思想
测试代码及结果
#include <iostream>
#include <stdlib.h>
using namespace std;
void printArray(int a[], int N) {
for (int i = 0; i < N; ++i) {
cout << a[i] << " ";
}
cout << endl;
}
int compare(int a[], int N) {
int i, j;
int sum = 0;
for (i = 1; i < N; ++i) {
for (j = 0; j < i; j++) {
if (a[j]