山东理工ACM 2554

来源:互联网 发布:中国儿童编程 编辑:程序博客网 时间:2024/04/27 13:23


题目描述


      听说过冒泡排序么?很好玩很暴力的一种排序方式,但对于小数据也是很实用的哦。今天我们不希望你用它来排序,而是希望你能算出从小到大冒泡排序的过程中一共进行了多少次数据交换。


输入


输入数据的第一行为一个正整数 T ,表示有 T 组测试数据。
接下来T行,每行第一个整数N, 然后有N个整数,无序。0<N<100


输出


输出共 T 行。
每行一个整数,代表本行数据从小到大冒泡排序所进行的交换次数。


示例输入

35 1 2 3 4 54 5 3 7 12 2 1


示例输出

041

代码如下

#include<stdio.h>
int main()
{
 int T,i,N,M,n,j=0,k=0,t=0,p,flag;
 int a[1000];
 scanf("%d",&T);
 for(i=1;i<=T;i++)
 {   flag=0;
      p=0;
  scanf("%d",&N);
  M=N-1;
  while(N--)
  {
   scanf("%d",&n);
   a[p]=n;
   p++;
  }
  for(j=0;j<M;j++)
   for(k=0;k<M-j;k++)
      if(a[k]>a[k+1])
    {t=a[k],a[k]=a[k+1],a[k+1]=t,flag++;}
    printf("%d\n",flag);

 }
 return 0;
}

0 0
原创粉丝点击