# 原理
首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕。
# 性能
- 时间复杂度
平均O(n*n)
最好情况O(n*n)
最差情况O(n*n)
- 空间复杂度
O(1)
- 稳定性
不稳定
# 示例
```
let array = ['E', 'A', 'D', 'B', 'H']
let selectionSort = (array) => {
let minIndex
for (let i = 0, length = array.length; i < length; i++) {
minIndex = i
for (let j = i + 1; j < length; j++) {
if (array[j] < array[minIndex]) {
minIndex = j
}
}
[array[i], array[minIndex]]= [array[minIndex], array[i]]
}
return array
}
console.log(selectionSort(array))
```
# 解析
minIndex始终保存着最小值的位置的索引,随着i的自增,遍历的数组长度越来越短,直到完成排序。