only Merge Sorting needs to be modified.
# include
# include
# include
# define infinite 1000 using namespace STD; int COUNT = 0; void input (vector
& V) {cout <"Please enter the number (<1000):"
data) v. push_back (data);} void Merge (vector
& V, int P, int Q, int R) {vector
V1, V2; int m = 0; int n = 0; For (INT I = P; I <= Q; I ++) v1.push _ back (v. at (I); v1.push _ back (infinite); For (INT I = q + 1; I <= r; I ++) v2.push _ back (v. at (I); v2.push _ back (infinite); For (INT I = P; I <= r; I ++) {If (V1 [m] <= v2 [N]) {v [I] = V1 [m]; m ++ ;} else {v [I] = v2 [N]; n ++; count + = (Q-P + 1-m); // count, because V1 and V2 are sorted, // once V1 [m]> V2 [N] appears, // the remaining elements in V1 are greater than V2 [N]. in this case, there are // Q-P + 1-m Reverse Order pairs }}} void mergesort (vector
& V, int P, int R) {If (P
V; input (V); mergesort (v, 0, V. size ()-1); cout