这道题是冒泡排序,以样例举例:
输入4个数:4 3 2 1
先将1归位,变成:1 4 3 2
进行了三次交换,s变成3
再将2归位,变成:1 2 4 3
进行了二次交换,s变成5
再将3归位,变成:1 2 3 4
进行了一次交换,s变成6
此时数组已经排序完毕,可以直接输出s
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int s=0,n,i,j,a[10010];//初始定义数组a和交换次数s
cin>>n;
// 通过循环读取数组a的值
for(i=1;i<=n;i++)
cin>>a[i];
// 使用冒泡排序算法,对数组a进行排序
for(i=1;i<=n;i++){
for(j=i;j<=n;j++){
// 如果当前元素大于后面的元素,则交换位置,并增加交换次数
if(a[i]>a[j]){
swap(a[i],a[j]);
s++;
}
}
}
cout<<s;// 输出交换次数s
return 0;
}