玫瑰不香

导航

踩坑日记 - 排序之选择排序

1、选择排序

  

2、排序原理

 

  通过遍历依次找到数组中最小的元素,依次放置数组最前面

3、排序步骤

  1)从原始数组中找出最小的元素

  2)将找到的最小元素放在数组最前面

  3)从剩下的元素只能寻找最小的元素

  4)将找的元素放在之前最小元素的后面

  5)重复以上1至4步骤,直至排序完毕

4、复杂度

  1)时间复杂度

    O(n²)

    时间复杂度最稳定的算法之一,始终是O(n²)

  2)空间复杂度

    O(1)

5、使用环境

  数据规模小;

6、优点

  不用占据额外的内存空间

7、例子

  代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>排序 -  选择排序</title>
</head>
<body>
</body>
</html>

<script>
    const originArr = [20, 25, 1, 2, 78, 100, 56, 5, 22,66]; 
    const len = originArr.length;
    console.log('这是数组原序列:[20, 25, 1, 2, 78, 100, 56, 5, 22,66]')
    originArr.forEach((item1, i) => {
        let minIndex = i;
        for(let j = i; j < len; j++) {
            if (originArr[j] < originArr[minIndex]) {
                const temp = originArr[minIndex];
                originArr[minIndex] = originArr[j];
                originArr[j] = temp;
                minIndex = j;
            }
        }
        console.log('这是第' + (i + 1) + '次循环的结果:' + JSON.parse(JSON.stringify(originArr)))
    })
    console.log('这是最终结果:' + originArr)

</script>

 

  结果:

    

 

 

 

 

参考:

https://www.cnblogs.com/zhouliang/p/6679836.html

https://www.cnblogs.com/yinhao-jack/p/10838401.html

posted on 2020-09-15 01:12  布娃娃  阅读(119)  评论(0编辑  收藏  举报