Java排序演算法 直接選擇排序

2021-08-09 06:29:50 字數 727 閱讀 7804

基本思想:

直接選擇排序的基本操作就是每一趟從待排序的資料元素中選出最小(或最大)的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完,它需要經過n-1趟比較。演算法不穩定,o(1)的額外的空間,比較的時間複雜度為o(n^2),交換的時間複雜度為o(n),並不是自適應的。在大多數情況下都不推薦使用。只有在希望減少交換次數的情況下可以用。

演算法描述:

n個記錄的檔案的直接選擇排序可經過n-1趟直接選擇排序得到有序結果:

①初始狀態:無序區為r[1..n],有序區為空。

②第1趟排序

在無序區r[1..n]中選出關鍵字最小的記錄r[k],將它與無序區的第1個記錄r[1]交換,使r[1..1]和r[2..n]分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。

……③第i趟排序

第i趟排序開始時,當前有序區和無序區分別為r[1..i-1]和r(1≤i≤n-1)。該趟排序從當前無序區中選出關鍵字最小的記錄 r[k],將它與無序區的第1個記錄r交換,使r[1..i]和r分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。

這樣,n個記錄的檔案的直接選擇排序可經過n-1趟直接選擇排序得到有序結果。

**實現:

public static void choicesort(int array)

}//不相等說明找到了最小的,則交換

if(i != min)}}

參考:

排序演算法 直接選擇(Java實現)

直接選擇是簡單排序,演算法思想是從第乙個數字開始,與後面的每個數字進行比較,如果該數字小了,那麼就把兩數進行交換,這樣一輪下來第乙個數字肯定是最小的數字,然後第二個數字開始與後面的數字進行比較,思想是一樣的,這樣的話,第二小的數字就到了第二個位置,這樣依次類推,排序就完成了。來舉一組例子 這樣一組數...

Java直接選擇排序

直接選擇排序方法屬於選擇排序的一種,它的排序速度要比氣泡排序快一些。直接排序的基本思想是將指定排序位置與其它陣列元素分別對比,如果滿足條件就交換元素值。public class selectsort selectsort selectsort new selectsort selectsort.so...

排序演算法(直接選擇排序)

為什麼我們要叫直接選擇排序呢?在最開始的時候,待排序區間是整個陣列,從區間選乙個最小的與區間第乙個交換位置,然後將待排序區間從第二個開始,繼續以上操作,直至待排序區間長度為0 我們還是以為例 初始 3 5 7 9 8 6 2 1 4 0 第一趟 05 7 9 8 6 2 1 4 3 第二趟 0 17...