选择排序——排序算法


前言

被暴打的前端菜鸟又来写博客了,这周写h5页面,全部用的绝对定位被怼爆了,哈哈哈,还依稀记着在实验室调侃学姐写小程序的时候用绝对定位,现在实习报应就来了,当时也不知道怎么想的,想着rem是个相对单位,然后想想如果用绝对定位写也应该能自适应吧,感觉没啥问题,完了就被怼了,哈哈哈。反正明天去了写完继续改呗,自己也该补补前端的知识点了,css还是大二暑假学的用进废退,现在算是彻底还给老师,要赶紧重新捡起来,不然想进大厂可能都难了。不扯了,今天水一篇选择排序算法吧。


一、什么是选择排序?

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。

二、算法描述

算法步骤:

  1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
  2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
  3. 重复第二步,直到所有元素均排序完毕。

算法复杂度:

  • 时间复杂度:O(n2) 不管什么样的数据只要用选择排序时间复杂都是n2
  • 空间复杂度:O(1)
  • 稳定性:不稳定

三、JS代码实现

浏览器打开控制台(chrome按F12键,现在好像都是f12吧)复制下面代码粘贴到控制台回车就可以运行看到结果了。(๑′ᴗ‵๑)
代码如下(示例):

//JS代码实现
function selectionSort(arr) {
    for (let i = 0; i < arr.length - 1; i++) {
        let min = i;
        for (let j = i + 1; j < arr.length; j++) {
            if (arr[min] > arr[j]) min = j;
        }
        [arr[min], arr[i]] = [arr[i], arr[min]]; //JS解构
    }
    return arr;
}

let arr = [1, 2, 3, 9, 8, 7, 5, 4, 6];
console.log(selectionSort(arr));

总结

选择排序感觉就是一般大家都能想到的最基础的方法吧,不断的将最小或最大的数据放到序列中,以前写了挺多的排序,之前也是知道选择排序,听名字感觉挺高大上的,了解以后原来也是一种普通的排序方法,算法思想并不难,难就难在我没有系统的了解过经典排序算法,哈哈哈。所以目前打算每周写一篇排序算法,不敢再随便立flag了,之前说的好像都没实现。工作虽然忙,但是还是要进步,争取早日进大厂吧,哈哈哈。

—— 2020.12.27 22:54 晚安!打工人

今日份励志名言:

“温故而知新,可以为师矣” ——出自孔子的《论语》

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ZERO丶X

托马斯回旋360°飞旋感谢!!

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

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

打赏作者

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

抵扣说明:

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

余额充值