Problem Description
听说过冒泡排序么?一种很暴力的排序方法。今天我们不希望你用它来排序,而是希望你能算出从小到大冒泡排序的过程中一共进行了多少次数据交换。
Input
输入数据的第一行为一个正整数 T ,表示有 T 组测试数据。
接下来T行,每行第一个整数N, 然后有N个整数,无序。0<N <= 100
Output
输出共 T 行。
每行一个整数,代表本行数据从小到大冒泡排序所进行的交换次数。
Sample Input
3
5 1 2 3 4 5
4 5 3 7 1
2 2 1
Sample Output
0
4
1
Hint
Source
题解:虽然不需要排序后的序列,但是也要进行排序。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i,a[101],t,T,j,x;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%d",&a[i]);
x=0;
for(i=1; i<n; i++)
{
for(j=0; j<=n-i-1; j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
x++;
}
}
}
printf("%d\n",x);
}
return 0;
}