演算法描述:
在乙個長度為n的無序陣列中,第一遍遍歷n各元素,找出其中最小的元素與第乙個位置上的數交換;第二遍遍歷剩下的n-1個元素,找出其中最小的數與第二個位置上的數交換;…;第n-1趟遍歷剩下的2個資料,找出其中最小的數值與第n-1個元素交換,至此選擇排序完成。
演算法分析:
時間複雜度:o(n^2)
空間複雜度:o(1)
無法做到穩定性
舉例說明:
陣列:3 2 0 1
i=0 minindex=0
j=1 比較arr[1]與arr[0],發現2<3,將1賦給minindex;
j=2 比較arr[2]與arr[1],發現0<2,將2賦給minindex;
j=3 比較arr[3]與arr[2],發現1>0,minindex還是2;
內層for迴圈結束,交換arr[i]與arr[minindex]的值。由此確定第乙個位置上的值。
code:
public
class selectionsort
for (int i = 0; i < arr.length - 1; i++)
swap(arr, i, minindex);}}
public
static
void
swap(int arr, int i, int j)
public
static
void
printarray(int arr)
for (int i = 0; i < arr.length; i++)
}public
static
void
main(string args) ;
selectionsort(arr);
printarray(arr);
}}
資料結構之選擇排序的java實現
選擇排序 每次迴圈都比較元素內容,記錄較小元素的下標,但是不進行交換 迴圈之後再判斷是否需要進行交換 與氣泡排序不同,氣泡排序每次比較,一旦滿足條件就進行元素內容交換 1.實現與測試 public class selectsort system.out.println arrays.tostring...
資料結構之選擇排序
基本方法 從0索引開始,依次和後面元素比較,小的往前放,第一次完畢,最小值出現在了最小索引處,第二次找到第二小的值。具體是如何實現呢?第一輪是0索引上的資料依次跟後面各個索引上的資料進行比較,直到遇到乙個比它小的資料,這時候,這個小的資料就替換掉0索引上原來的資料,接著這個替換掉的資料繼續跟它原來的...
資料結構之選擇排序
選擇排序應該是最容易實現的一種排序方法,其原理很簡單,依舊分為兩塊資料,左邊選取資料與右邊的資料進行比較,取最小值,比較到最後的位置後交換資料,確保每一次比較中最小值都會調整到左邊並有序增加,實質上就是取最小值的函式,只不過外層包了乙個迴圈。void selectionsort int arr,in...