【题目链接】
ybt 1310:【例2.2】车厢重组
洛谷 P1116 车厢重组
【题目考点】
1. 冒泡排序
【解题思路】
该题实际求的是:统计冒泡排序中数据交换的次数
【题解代码】
解法1:冒泡排序 下标从1开始
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, a[10005], ct = 0;//ct:数据交换的次数
cin >> n;
for(int i = 1; i <= n; ++i)
cin >> a[i];
for(int i = 1; i <= n-1; ++i)
for(int j = 1; j <= n-i; ++j)
if(a[j] > a[j+1])
{
swap(a[j], a[j+1]);
ct++;
}
cout << ct;
return 0;
}
解法1:冒泡排序 下标从0开始
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, a[10005], ct = 0;//ct:数据交换的次数
cin >> n;
for(int i = 0; i < n; ++i)
cin >> a[i];
for(int i = 0; i < n-1; ++i)
for(int j = 0; j < n-1-i; ++j)
if(a[j] > a[j+1])
{
swap(a[j], a[j+1]);
ct++;
}
cout << ct;
return 0;
}