選擇排序(Selection sort)是一種簡(jiǎn)單直觀的排序算法努咐。它的工作原理是:第一次從待排序的元素中選出最小的一個(gè)元素,存放在序列的起始位置,然后再?gòu)氖S嗟奈磁判蛟刂袑ふ业阶钚≡芈肓缓蠓诺揭雅判虻男蛄械哪┪病R源祟?lèi)推扬霜,直到全部待排序的數(shù)據(jù)元素的個(gè)數(shù)為零定鸟。
時(shí)間復(fù)雜度:O(n^2)
排序方式:原地排序,不穩(wěn)定排序
實(shí)現(xiàn)代碼
/**
* 選擇排序(升序)
*/
public void selectSort(int[] array) {
int length = array.length;
for (int i = 0; i < length - 1; i++) {
int minIndex = selectMinIndex(array, i, length);
int item = array[i];
array[i] = array[minIndex];
array[minIndex] = item;
}
}
/**
* 從數(shù)組的指定區(qū)域[from,to)選擇最小元素的下標(biāo)
*/
public int selectMinIndex(int[] array, int from, int to) {
int minIndex = from;
for (int i = from + 1; i < to; i++) {
if (array[i] < array[minIndex]) {
minIndex = i;
}
}
return minIndex;
}