前言
被暴打的前端菜鸟又来写博客了,这周写h5页面,全部用的绝对定位被怼爆了,哈哈哈,还依稀记着在实验室调侃学姐写小程序的时候用绝对定位,现在实习报应就来了,当时也不知道怎么想的,想着rem是个相对单位,然后想想如果用绝对定位写也应该能自适应吧,感觉没啥问题,完了就被怼了,哈哈哈。反正明天去了写完继续改呗,自己也该补补前端的知识点了,css还是大二暑假学的用进废退,现在算是彻底还给老师,要赶紧重新捡起来,不然想进大厂可能都难了。不扯了,今天水一篇选择排序算法吧。
一、什么是选择排序?
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。
二、算法描述
算法步骤:
- 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
- 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
- 重复第二步,直到所有元素均排序完毕。
算法复杂度:
- 时间复杂度: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 晚安!打工人
今日份励志名言:
“温故而知新,可以为师矣” ——出自孔子的《论语》