常用排序演算法 選擇排序

2021-09-27 00:22:29 字數 1760 閱讀 2804

選擇排序(selection sort)是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法。

我們假設有乙個含有6個元素的int型的一維陣列變數,他們分別是 2,7,8,9,6,4,我們對它們進行選擇排序:

我們首先進行第一輪排序:

先把第0個元素,即』2』作為索引值,此時索引值的位址是0;

索引值元素(第0個)與第1個元素,即7比較,2<7,不進行操作;

索引值元素(第0個)與第2個元素,即8比較,2<8,不進行操作;

索引值元素(第0個)與第3個元素,即8比較,2<9,不進行操作;

索引值元素(第0個)與第4個元素,即8比較,2<6,不進行操作;

索引值元素(第0個)與第5個元素,即8比較,2<4,不進行操作;

此時我們本應該將索引值位址與第0個元素交換的,但是我們發現索引值位址一直沒發生變化。

我們再進行第二輪排序:

先把第1個元素,即』7』作為索引值,此時索引值的位址是1;

索引值元素(第1個)與第2個元素,即8比較,7<8,不進行操作;

索引值元素(第1個)與第3個元素,即9比較,7<8,不進行操作;

索引值元素(第1個)與第4個元素,即6比較,7>6,更新索引值,目前索引值位址為4

索引值元素(第4個)與第5個元素,即4比較,6>4,更新索引值,目前索引值位址為5

我們再將第1個元素與索引值位址的元素交換,即第1個元素與第5個元素交換,此時陣列序列為2,4,8,9,6,7

我們再進行第三輪排序:

先把第2個元素,即』8』作為索引值,此時索引值的位址是2;

索引值元素(第2個)與第3個元素,即9比較,8<9,不進行操作;

索引值元素(第2個)與第4個元素,即9比較,8>6,更新索引值,目前索引值位址為4

索引值元素(第4個)與第5個元素,即4比較,6>7,不進行操作;

我們再將第2個元素與索引值位址的元素交換,即第2個元素與第4個元素交換,此時陣列序列為2,4,6,9,8,7,依次類推排序即可完成。

package datastructure;

public

class

seletesort

}public

static

void

main

(string[

] args)

;sort

(arr)

;for

(int n : arr)

system.out.

print

(n +

" ");}

}

選擇排序最好的時間複雜度為 o(n²),最壞時間複雜度為 o(n²);

綜上,因此選擇排序總的平均時間複雜度為 o(n²)。

常用排序演算法 選擇排序

選擇法排序 找出最小值,依次第乙個位置互換。例如陣列 33,6,5,59,12 第一次遍歷 找出最小值 12與陣列第乙個值33互換 第二次遍歷 找出除陣列第乙個值以外的剩下的最小值 5,與陣列第二個位置的值6互換 外部迴圈設定遍歷次數,陣列5個元素最多需要4次遍歷,因為每次決定陣列的乙個位置,最後乙...

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

目錄 直接選擇排序 堆排序 思想 每趟從待排序的記錄序列中選擇關鍵字最小的記錄放置到已排序表的最前位置,直到全部排完。關鍵問題 在剩餘的待排序記錄序列中找到最小關鍵碼記錄。簡單的選擇排序 1 基本思想 在要排序的一組數中,選出最小的乙個數與第乙個位置的數交換 然後在剩下的數當中再找最小的與第二個位置...

常用排序演算法 直接選擇排序

第 1 趟,在待排序記錄 r1 r n 中選出最小的記錄,將它與 r1 交換 第 2 趟,在待排序記錄 r2 r n 中選出最小的記錄,將它與 r2 交換 以此類推,第 i 趟在待排序 記錄 r i r n 中選出最小的記錄,將它與 r i 交換,使有序序列不斷增長直到全部排序 完畢。例如 2,4,...