对于一个包含N个非负整数的数组A[1…n],如果有i < j,且A[ i ]>A[ j ],则称( i , j )为数组A中的一个逆序对。 例如,数组(3,1,4,5,2)的逆序对有(3,1),(3,2),(4,2),(5,2),共4个。
输入格式:
输入包含若干组数据,第一行为一个整数T(0<T<20),表示共有T组测试数据。接下来每组测试数据包括两行,第一行只有一个整数m(0<m<=1000),表示数组有m个数,第二行为m个整数,数据之间用空格分隔。
输出格式:
对输入中的每组测试数据,输出一行对应逆序对的个数。
输入样例:
在这里给出一组输入。例如:
2
5
3 1 4 5 2
10
1 2 3 4 5 6 7 8 9 10
输出样例:
在这里给出相应的输出。例如:
4
0
代码
#include<iostream>
using namespace std;
int main(){
int T; cin>>T;
for(int i=0;i<T;i++){
int arr[1010];
int cnt=0;
int t; cin>>t;
for(int j=0;j<t;j++){
cin>>arr[j];
}
for(int k=0;k<t;k++){
for(int m=k+1;m<t;m++){
if(arr[k]>arr[m]){
cnt++;
}
}
}
cout<<cnt<<endl;
}
}
数组中的逆序对 暴力 归并
算法之路_7、逆序对问题
数组中的逆序对(归并排序思想)
算法导论 练习题 14.1-7(逆序对)
归并排序(逆序对的解决)