>[success] # 关于排序 ~~~ 1.下面给了两个排序的动画网网站,方便理解每个排序实际的图形化效果 2.关于双层循环的使用'1一轮比不完 涉及多轮就是双循环' ~~~ [排序动画效果1](https://visualgo.net/zh/sorting) [排序动画效果2](https://www.toptal.com/developers/sorting-algorithms#) [优先读这个推荐十大算法讲解](https://www.runoob.com/w3cnote/ten-sorting-algorithm.html) * 数据结构与算法之美王争老师文章的图片 ![](https://img.kancloud.cn/ce/12/ce1215ecd9db20d4b9b911a75ff68f76_1142x698.png) >[info] ## 关于排序引入的新概念 ~~~ 1.'原地排序':是特指空间复杂度是 O(1) 的排序算法 2.'稳定的排序算法':用王争老师文章内容来解释: 比如我们有一组数据 2,9,3,4,8,3,按照大小排序之后就是 2,3,3,4,8,9。这组数据里有两个 3。 经过某种排序算法排序之后,如果两个 3 的前后顺序没有改变,那我们就把这种排序算法叫作'稳定的排序算法'; 如果前后顺序发生变化,那对应的排序算法就叫作'不稳定的排序算法'。 ~~~ >[danger] ##### 对冒泡、插入、选择 三种排序的比较 ~~~ 1.三种最优的是'插入',最差的事'选择' ~~~ * 数据结构与算法之美王争老师文章的图片 ![](https://img.kancloud.cn/7e/ef/7eefaf9712c02d8297d7939bbd16b7bf_1142x584.png) >[danger] ##### 归并、快速排序的比较 ~~~ 1.对冒泡、插入、选择 这三种在实际开发中很少用到,以js为例本身就自带了数组的排序方法'sort' 2.用《学习javasprict数据结构与算法》第三版文章内容来解释: JavaScript 的 Array 类定义了一个 sort 函数(Array.prototype.sort)用以 排序 JavaScript 数组(我们不必自己实现这个算法)。ECMAScript 没有定义用哪 个排序算法,所以浏览器厂商可以自行去实现算法。例如,Mozilla Firefox 使用 '归并排序'作为 Array.prototype.sort 的实现,而 Chrome(V8 引擎)使用了 一个'快速排序'的变体 ~~~