原理
數(shù)據(jù)分為 有序 | 無(wú)序兩個(gè)部分。以升序?yàn)槔? 遍歷未排序部分,找到最小值,加到有序末尾。重復(fù)該過(guò)程,直到有序部分等于數(shù)據(jù)源長(zhǎng)度。
復(fù)雜度分析
平均時(shí)間復(fù)雜度為O(n^2)
時(shí)間復(fù)雜度最壞為O(n^2)
空間復(fù)雜度為 O(1)
不穩(wěn)定
代碼實(shí)現(xiàn)
public void sort(List<V> srcList, Comparator<V> comparator) {
if (srcList == null || srcList.size() <= 2) {
return;
}
V min = null;
V element = null;
int minIndex = 0;
for (int index = 0; index < srcList.size(); index++) {
for (int j = index; j < srcList.size(); j++) {//找到最小值
element = srcList.get(j);
if (min == null || comparator.compare(element, min) < 0) {
minIndex = j;
min = element;
}
}
V temp = srcList.get(index);
srcList.set(index, min);//最小值加到有序末
srcList.set(minIndex, temp);
min = null;
}
}