• javascript算法排序之选择排序



    活动地址:CSDN21天学习挑战赛

    前言

    经典的排序算法,很多人都听过,很多人也许用过,但是也有很多人,听过没见过。为什么呢?现在我们有了越来越多的框架、依赖包,我们将能用到排序的实际场景,作为业务将其封装成了函数,所以,一些人只知函数而不知其运行逻辑。

    基于以上,为了让自己更好的理解函数运行逻辑,整理了一些基本排序的方法的运行规则,以及部分个人理解,希望能给大家一些帮助。

    本文将讲述选择排序,及选择排序和冒泡排序的区别!
    因为很多人仔细回想时,无法准确说明选择排序和冒泡排序的区别,甚至认为他们是同一个!

    选择排序

    选择排序(Selection sort)是一种简单直观的排序算法。顾名思义,选择排序的核心要点在于选择,选择数组中的最大值或最小值!,然后按逻辑放到指定位置。

    选择排序实现原理

    • 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;
    • 然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾;
    • 以此类推,直到所有元素均排序完毕;

    在这里插入图片描述

    代码

    
    function selectionSort(array) {
        //外循环控制次数
        for (var i = 0; i < array.length; i++) {
            //假定最小值用于比较
            var min = array[i];
            //j=i+1使其从剩余元素中进行筛查
            for (var j = i + 1; j <= array.length; j++) {
                //从剩余数字中寻找最小值
                if (min > array[j]) {
                    //更新最小值
                    min = array[j];
                    //交换a[j]和a[i]
                    var item = array[j];
                    array[j] = array[i];
                    array[i] = item;
                }
            }
    
        }
        console.log("selectionSort result:", array);
    }
    
    selectionSort([4, 5, 1, 3, 2]);
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    输出值:
    在这里插入图片描述

    复杂度

    选择排序的时间复杂度,
    时间复杂度:O(n^2);
    空间复杂度:O(n);

    选择排序和冒泡排序比较

    区别:

    • 冒泡排序:两两比较,即时交换。
    • 选择法排序:先找最值,一次交换。

    优劣:

    • 选择排序比冒泡排序速率快。 选择排序元素交换次数为O(n),冒泡排序元素交换次数为O(n^2),由于交换所需CPU时间比比较所需的CPU时间多,n值较小时,所以选择排序比冒泡排序快;
    • 冒泡排序比选择排序实现简单。 如果待排序数据量小,并且对效率要求不高时,冒泡排序完全可以满足;

    寄语

    看似选择排序和冒泡排序实现逻辑相同,且均能实现排序功能,但是实则在运算速率上不可同日而语,这就是基础算法的魅力。

    圆越大,不可预知的可能越多!

  • 相关阅读:
    openGauss学习笔记-229 openGauss性能调优-系统调优-配置Ustore
    Linux学习笔记5-GPIO(3)
    【解决】常见反爬总结之SVG映射
    ROS1云课→14可视化交互
    多线程【thread】【queue储存、锁】【2】
    ES6及更新版本的新特性
    火灾隐患是查不完的,消防监管要着力于提升单位消防能力
    RUST学习过程
    【web-攻击用户】(9.5)同源策略:与浏览器扩展、HTML5、通过代理服务应用程序跨域
    高通平台Android 蓝牙调试和配置手册-- HCI Transport Failures: Command Timeout
  • 原文地址:https://blog.csdn.net/Long861774/article/details/126329904