1. 程式人生 > >C語言訓練-2554-氣泡排序中資料交換的次數

C語言訓練-2554-氣泡排序中資料交換的次數

Problem Description
聽說過氣泡排序麼?一種很暴力的排序方法。今天我們不希望你用它來排序,而是希望你能算出從小到大氣泡排序的過程中一共進行了多少次資料交換。
Input
輸入資料的第一行為一個正整數 T ,表示有 T 組測試資料。
接下來T行,每行第一個整數N, 然後有N個整數,無序。0<N <= 100
Output
輸出共 T 行。
每行一個整數,代表本行資料從小到大氣泡排序所進行的交換次數。
Sample Input
3
5 1 2 3 4 5
4 5 3 7 1
2 2 1
Sample Output
0
4
1
沒的說,比較簡單的一個題。啦啦啦

#include<bits/stdc++.h>
int main()
{
  int m,n,a[100];
  int j=0,k=0,i=0;
  scanf("%d",&m);
  while(m--)
  {
    int sum=0,temp;
    scanf("%d",&n);
    for(k=0;k<n;k++)
    {
      scanf("%d",&a[k]);
    }
    for(i=0;i<n-1;i++)
    {
      for(j=0;j<n-i-1;j++)
      {
        if(a[j]>a[j+1])
        {
          temp = a[j]; a[j] = a[j+1]; a[j+1] = temp;
          sum++;
        }
      }
    }
    printf("%d\n",sum);
  }
  return 0;
}