听说过冒泡排序么?一种很暴力的排序方法。今天我们不希望你用它来排序,而是希望你能算出从小到大冒泡排序的过程中一共进行了多少次数据交换。
输入格式:
第一行为一个正整数 T ,表示有 T 组测试数据。
接下来T行,每行第一个整数N, 然后有N个整数,无序。0<N <= 100。
输出格式:
输出共 T 行。
每行一个整数,代表本行数据从小到大冒泡排序所进行的交换次数。
样例">输入样例:
3
5 1 2 3 4 5
4 5 3 7 1
2 2 1
输出样例:
0
4
1
代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in );
int number = reader.nextInt();//写入数组个数
for(int i = 0;i < number;i++) {
int n = reader.nextInt();//写入数组大小
int a[] = new int[n];
for (int k = 0; k < n; k++) {
a[k] = reader.nextInt();//写入数组
}
int temp = 0, count = 0;
for (int j = 0; j < n;j++){//冒泡排序
for(int m = 0; m < n - j- 1;m++){
if(a[m] > a[m+1]){
temp = a[m];
a[m] = a[m+1];
a[m+1]= temp;
count++;//统计交换次数
}
}
}
System.out.println(count);
}
}
}
注意:
3
5 1 2 3 4 5
4 5 3 7 1
2 2 1
其中第二行的首个5,第三行的4,第四行首个2,均为数组大小,不是数组数据!!!