排序演算法之選擇排序

2021-08-03 18:34:21 字數 837 閱讀 2405

選擇排序

選擇排序其實是氣泡排序的公升級版,將必要的交換次數從o(n^2)減少到o(n),但是它的比較次數依然是o(n^2)。

描述:定義乙個變數(temp)用於記錄最小值(最大值)的下標,然後迴圈陣列並比較,記錄每次比較時所產生的較小(大)的那個值所在的下標,

下次比較時就是拿temp變數中記錄的那個下標的值去比較,一輪結束後temp就會記錄最小(大)的那個值的下標,

最後與"i"交換位置。

看圖其實更明顯

順便在帖個**先~

public class selectsort ;

@org.junit.test

public void sort()

}if(temp != i)

} display(); }

public void display(){

for(int i=0; i

這裡有乙個不變性,就是已經排好序的資料項,我不知道該怎麼寫,就用了個i來代替^_^。

選擇排序和氣泡排序執行了相同次數的比較: n*(n-1)/2。然而對於n個資料項,選擇排序最多也就只需要交換n-1次,但是氣泡排序最多卻需要交換n^2次。所以選擇排序的效率也就高於氣泡排序。

排序演算法 排序演算法之選擇排序

最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...

排序演算法之選擇排序 選擇排序 堆排序

直接選擇排序 如下 下面 是一次迴圈同時挑選出最大和最小數,並將其與左右交換 選擇排序 void selectionsort int a,int len swap a min a left 如果最大數的下標在為left,證明要交換的最大數已經被 換到min小標所表示的位置,只需要將right和min...

排序演算法之選擇排序

選擇排序 在乙個長度為n的無序陣列中,在第一趟遍歷n個資料,找出其中最小的數值與第乙個元素交換,第二趟遍歷剩下的n 1個資料,找出其中最小的數值與第二個元素交換.第n 1趟遍歷剩下的2個資料,找出其中最小的數值與第n 1個元素交換,至此選擇排序完成。平均時間複雜度 o n2 空間複雜度 o 1 用於...