PTA 7-225 sdut-C语言实验- 冒泡排序中数据交换的次数
听说过冒泡排序么?一种很暴力的排序方法。今天我们不希望你用它来排序,而是希望你能算出从小到大冒泡排序的过程中一共进行了多少次数据交换。
输入格式:
输入数据的第一行为一个正整数 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
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
代码:
#include <stdio.h>
int main(){
int T; //测试组数
scanf("%d", & T);
for(int k = 1; k <= T; k++){ //循环每次测试
int n, temp, count = 0; //表示数据个数; 临时变量temp; 记录次数count
scanf("%d", &n);
int bubble[n];
int len = sizeof(bubble) / sizeof(bubble[0]); //数组长度
for(int m = 0; m < len; m++){ //遍历数组
scanf("%d", &bubble[m]);
}
for(int i = 0; i < len - 1; i++){ //冒泡排序
for(int j = 0; j < len - 1 - i; j++){
if(bubble[j] > bubble[j + 1]){ //交换值
temp = bubble[j + 1];
bubble[j + 1] = bubble[j];
bubble[j] = temp;
count++; //记录交换次数
}
}
}
printf("%d\n", count); //每组测试换行
}
return 0;
}
解题思路:
step1:设置测试组数并循环每次测试
step2:将每组测试输入的数据储存到数组中
step3:将数组的数据从小到大排序(冒泡排序)
step4:每交换一次值记录一次交换次数
step5:每组输出一次交换次数
归属知识点:
数组
循环结构
选择结构