题意:有两个数Ai,Aj(i < j)若Ai > Aj的话,称为有效比较。按数组下标从小到大枚举,用选择排序判断有效比较的次数。
策略:按递增序列进行选择排序。
#include <iostream>
#include <memory.h>
#include <vector>
using namespace std;
int main()
{
int n;
vector<int> data;
data.clear();
cin >> n;
while(n--)
{
int m = 0;
cin >> m;
for(int i = 0;i < m;i++)
{
int temp;
cin >> temp;
data.push_back(temp);
}
int min = 0;
int count = 0;
for(int i = 0;i < data.size() - 1;i++)
{
min = i;
for(int j = i + 1;j < data.size();j++)
{
if(data[j] < data[min])
{
count++;
min = j;
}
}
if(min != i)
{
int tem = data[i];
data[i] = data[min];
data[min] = tem;
}
}
cout << count << endl;
data.clear();
}
return 0;
}