- 算法可视化:连接
- 时间复杂度,平均:\(O(n^2)\),最好:\(O(n^2)\),最坏:\(O(n^2)\)
- 空间复杂度,\(O(1)\)
- 是否稳定:不稳定
算法思路
选择排序是一种十分直接的算法,
- 选出第 1 小的数放入第 1 个位置
- 选出第 2 小的数放入第 2 个位置
- 选出第 3 小的数放入第 3 个位置…
实现
/**
* 选择排序
*
* @author ychost
* @date 2018-4-5
*/
public class SelectSort {
void sort(int[] array) {
for (int i = 0; i < array.length; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[i]) {
swap(array, i, j);
}
}
}
}
void swap(int[] array, int i, int j) {
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}