# 选择排序

{% hint style="info" %}
**选择排序(Selection-sort)是一种简单直观的排序算法。**&#x5B83;也是表现最稳定的排序算法之一，因为无论什么数据进去都是O(n2)的时间复杂度，所以用到它的时候，数据规模越小越好。

**它的工作原理：**&#x9996;先在未排序序列中找到最小元素，存放到排序序列的起始位置，然后，再从剩余未排序元素中继续寻找最小元素，然后放到已排序序列的末尾。以此类推，直到所有元素均排序完毕。
{% endhint %}

选择排序是从数组的开头开始，将第一个元素和其他元素作比较，检查完所有的元素后，最小的放在第一个位置，接下来再开始从第二个元素开始，重复以上一直到最后。

```javascript
function selectSort(arr) {
    var len = arr.length;
    for(let i = 0 ;i < len - 1; i++) {
        for(let j = i ; j<len; j++) {
            if(arr[j] < arr[i]) {
                [arr[i],arr[j]] = [arr[j],arr[i]];
            }
        }
    }
    return arr
}
```

简单说两句：外层循环的i表示第几轮，arr\[i]就表示当前轮次最靠前(小)的位置；内层从i开始，依次往后数，找到比开头小的，互换位置即可.

* 外层循环的`i`表示第几轮，`arr[i]`就表示当前轮次最靠前(小)的位置；
* 内层从`i`开始，依次往后数，找到比开头小的，互换位置即可
