• 分已排和未排两个区间
    • 从未排区间找到最小元素放到已排的末尾
    1. function selectSort(arr){
    2. const len = arr.length;
    3. for(let i=0;i<len;i++){
    4. let min = i;
    5. for(let j=i+1;j<len;j++){
    6. if(arr[j]<arr[i]){
    7. min = j;
    8. }
    9. }
    10. [arr[i],arr[min]] = [arr[min],arr[i]];
    11. }
    12. }
    • 空间O(n),原地排序
    • 平均、最好、最坏都是O(n)
    • 因为每次找最小值时候,相同值可能会交还位置,不是稳定排序