選擇排序:每次選擇當前最小或者最大的數字置與相應的位置進行交換,最好即完成排序,它是對氣泡排序的一種優化;氣泡排序的**氣泡排序:也會選擇當前的最大或者最小的數到相應的位置,但是他每次都是兩兩交換,就像氣泡一樣慢慢的將數公升上去
區別:兩者的過程不一樣,選擇採用標記來標記當前的需要交換的位置,最後只需要交換一次,一次選擇交換一次
相同點:兩者思想一樣,都是冒泡,但是選擇是一口氣飛上去,冒泡是慢慢公升上去;
總結,選擇是對冒泡的一種優化
選擇排序的**:
public
class maopaopaixu ;
for (int i = 0; i < array.length; i++)
system.out.println();
maopao(array);
for (int i = 0; i < array.length; i++)
system.out.println();
}public
static
void maopao(int array)}}
system.out.println("交換的次數:"+count);
}}結果:16
8452
3 交換的次數:1212
3456
8
public class xuanzepaixu ;
for (int i = 0; i < array.length; i++)
system.out.println();
xuanze(array);
for (int i = 0; i < array.length; i++)
system.out.println();
}/**
* 遍歷一遍,找出最小的放在第一位,和第一位交換
* @param a
*/private static void xuanze(int array)
}//找到最小的下標直接交換即可
temp = array[i];
array[i] = array[min];
array[min] = temp;
count++;
}system.out.println("交換的次數:"+count);
}} 結果:
1 6 8 4 5 2 3
交換的次數:6
1 2 3 4 5 6 8
選擇排序vs氣泡排序
氣泡排序 最小時間複雜度n,最差複雜度為 n 2,使用兩層迴圈實現,依次將陣列裡的每個元素,與其他元素比較,只要大於當前正在比的元素就交換兩者 實現 function bubble arr if sorted break return arr 選擇排序 穩定,時間複雜度無論如何都是o n 2 具體實...
選擇排序,氣泡排序,雙向氣泡排序
氣泡排序和選擇排序是最基本的排序方式,要掌握。氣泡排序重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。選擇排序每一趟從待排序的 資料元素 中選出最小 或最大 的乙個元素,順序放在已排好序的數列的...
選擇排序,氣泡排序,雙向氣泡排序
首先是選擇排序,原理 1 找到未排序的數中最小的數放到最前面 2 陣列後移一位 3 重複上面兩部。void selectsorting if min a i swap b i b t 這個應該是我第乙個接觸到的排序演算法,結果第一次打排序水題直接上冒泡,直接接了一發tle 才知道有nlogn的演算法...