逆序数: 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 #include "stdafx.h" #include <cassert> #include <iostream> using namespace std; class ReversedOrder { public: ReversedOrder(int *data, int length):elemArray(data),arrayLength(length),reverseCount(0) {} ~ReversedOrder() { if (elemArray) { delete []elemArray; elemArray = NULL; } } void orderAll() { order(0, arrayLength - 1); } int getReversedCount() { return reverseCount; } private: void order(int left, int right) { if (left >= right) return ; int mid = (left + right) / 2; order(left, mid); order(mid + 1, right); merge(left, mid, mid + 1, right); } void merge(const int start1, const int end1, const int start2, const int end2) { int *tempArray = new int[end2 - star