冒泡排序:數組
class common_sort
{
private int[] Array = new int[]{1,5,9,86,45,56,15};
public common_sort()
{
exe_popupsort();
for(int i = 0;i < Array.length; i++)
{
System.out.println(Array[i]);
}
}
private void exe_popupsort()
{
int exchange = 0;
for(int i = Array.length - 1; i >0 ; i--)
{
for(int j = 0; j<i; j++)
{
if(Array[j] > Array[j+1])
{
exchange = Array[j];
Array[j] = Array[j+1];
Array[j+1] = exchange;
}
}
}
}
}排序
時間複雜度分析:class
時間複雜度其實就是if語句的執行次數,計算if語句的執行次數能夠採用逆序數的方法來計算;逆序數的定義以下:方法
在一個排列中,若是一對數的先後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱爲一個逆序。一個排列中逆序的總數就稱爲這個排列的逆序數。逆序數爲偶數的排列稱爲偶排列;逆序數爲奇數的排列稱爲奇排列。如2431中,21,43,41,31是逆序,逆序數是4,爲偶排列。 sort
也是就說,對於n個不一樣的元素,先規定各元素之間有一個標準次序(例如n個 不一樣的天然數,可規定從小到大爲標準次序),因而在這n個元素的任一排列中,當某兩個元素的前後次序與標準次序不一樣時,就說有1個逆序。一個排列中全部逆序總數叫作這個排列的逆序數。di
對於冒泡排序來講,每一次if 語句的執行就是消除了一個逆序,直到該數組的逆序爲0,那麼排序結束;數列2431的逆序數是4,該數列反向排列即1342,逆序數爲2,Cn2就是兩個排列的逆序之和,任意排列的出現機率爲50%,因此逆序數應該計算爲Cn2/2,因此時間複雜度是O(n2);時間