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]);

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

复杂度

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

选择排序和冒泡排序比较

区别:

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

优劣:

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

寄语

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乾复道

与君共勉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值