【问题】
找出反序的个数
给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序。 即:数组a[]; 对于i a[j],则称这是一个反序。 给定一个数组,要求写一个函数,计算出这个数组里全部反序的个数。
【代码】
#include
#include
#include
int sumNum = 0;
void merge(int *a, int *b, int begin, int mid, int end)
{
int i, j, k = 0;
i = begin;
j = mid + 1;
while (i <= mid && j <= end) {
if (a[i]
{
int count = 0;
int i, j;
for (i = 0; i a[j])
count++;
return count;
}
int main(void)
{
int count;
int a[] = {7, 4, 5, 3, 8, 6, 9, 10, 11};
int len = sizeof(a) / sizeof(int);
int *b;
b = (int *)malloc(len * sizeof(int));
count = countReverse(a, len);
mergeSort(a, b, 0, len - 1);
printf("%d\n", sumNum);
printf("%d\n", count);
free(b);
return 0;
}
【执行结果】