氣泡排序中資料交換的次數

2021-10-01 05:31:07 字數 501 閱讀 4104

problem description

聽說過氣泡排序麼?一種很暴力的排序方法。今天我們不希望你用它來排序,而是希望你能算出從小到大氣泡排序的過程中一共進行了多少次資料交換。

input

輸入資料的第一行為乙個正整數 t ,表示有 t 組測試資料。

接下來t行,每行第乙個整數n, 然後有n個整數,無序。0output

輸出共 t 行。

每行乙個整數,代表本行資料從小到大氣泡排序所進行的交換次數。

sample input

35 1 2 3 4 5

4 5 3 7 1

2 2 1

sample output04

1

#include

intmain()

for(i=

0;i1;i++)}

}printf

("%d\n"

,sum);}

return0;

}

氣泡排序中交換次數與比較次數

氣泡排序的過程中每次交換就是消除乙個逆序對,而比較次數由其外層迴圈確定,因為內層是肯定迴圈至結束的。用了歸併排序求逆序對,樹狀陣列求乙個數的最大逆序對數。內部迴圈的次數為n 1,n 2.n m 數列求和。如下,大家可以測試下。include include include include inclu...

氣泡排序的交換次數 樹狀陣列

計算氣泡排序的交換次數 逆序數概念 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序 乙個排列中所有逆序個數總和叫做這個排列的逆序數。所以氣泡排序結束即是所有的逆序數為0 思路 暴力 我們要計算逆序數,即使要統計出該值位置之前有多少個數比他大.我們用 ...

演算法 基於資料交換的排序

public static void sort int array 思路 找到比a i 大的a j 值就進行交換 public static void sort int array 特點 時間複雜度 o n 2 public static void sort int array int flag a...