题目描述
请输出对一组数用冒泡排序要交换的次数。
输入
多组输入数据,每组数据输入一个n<1000,代表接下来有n个数.第二行输入n个数a[i];a[i]<2e9
输出
输出对n个数用冒泡排序从小到大过程中需要交换的次数;
样例输入
10 28 91 58 6 52 96 72 78 83 55 3 3 2 1
样例输出
18 3
分析:按照冒泡排序的模板打一遍即可,定义一个计数器,交换一次计数器+1,排序完后输出计数器值即可
#include<stdio.h>
const int m1=1e3+2;
int num[m1];
int n,m,temp,sum;
int main()
{
while(scanf("%d",&n)!=EOF)
{
sum=0;
for(int i=0;i<n;i++)
scanf("%d",&num[i]);
for (int i=0; i<n-1; i++)
for (int j=0; j<n-1-i; j++)
{
if (num[j] > num[j+1])
{
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
sum++;
}
}
printf("%d\n",sum);
}
}