常见的排序方法(javascript)
2017-08-22 15:18
190 查看
冒泡排序
重复的走访过要排序的数列,一次比较两个元素,如果顺序错误就交换过来。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
let arr = [3,12,5,8,19,21,1,15]; for (let i = 0; i < arr.length - 1; i++) { for (let j = 0; j<arr.length - 1 - i; j++){ if (arr[j] > arr[j+1]) { let temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } }
步骤:
最外层的循环次数和数组长度相等。第一次循环,所有项两两对比,数组中最大的数字被放到最后。
第一次比较结果:
[3,12,5,8,19,1,15,21];
因为最大数字被选出,所以最后一个数字不用进入比较,第二轮,从第一项比较到倒数第二项。
第二次比较结果:
[3,12,5,8,1,15,19,21];
以此类推比较到最后得出结果。
因为每次比较都能把最大的移到后面,所以内层的循环每次都减去i,因为i等于进行了几次比较,已经有多少确定的数字被移动到了最后。
插入排序
对于未排列数据,在已排序序列中从后向前扫描,找到相应的位置并插入。let arr = [3,12,5,8,19,21,1,15]; for (let i = 1; i < arr.length; i++){ for (let j = 0; j < i; j++){ if(arr[j] > arr[i]){ arr.splice(j, 0, arr[i]); arr.splice(i+1, 1); } } }
步骤:
最外层循环次数和数组长度相同。i=1时,内层循环进行1次,即j为0,第一项和第二项比较,如果第一项大于第二项,在j的位置,即第一项的位置插入i的数字,即第二项,再删除i位置本身的数字。
i=2时,第一项,第二项都与第三项比较,比第三项大就执行操作。
第二项大于第三项:
//先插入元素 [3,5,12,5,8,19,21,1,15] //再删除元素 [3,5,12,8,19,21,1,15]
后面以此类推,每一层循环,都把最大的往后换。
我觉得这个就是把后面的数据,一个个去对比放到前面的哪个位置比较好,再进行替换。
快速排序
通过一次排序将要排序的数据分割成两部分,左边的部分小于右边的部分,再按此方法继续排序。Array.prototype.quick_sort = function() { var len = this.length; if(len <= 1){ return this.slice(0); } var left = []; var right = []; var mid = [this[0]]; for (var i = 1; i < len; i++) { if (this[i] < mid[0]){ left.push(this[i]); }else{ right.push(this[i]); } } return left.quick_sort().concat(mid.concat(right.quick_sort())); } let arr = [3,5,12,8,19,21,1,15]; arr = arr.quick_sort();
步骤:
将数组的第一项作为基准项,所有比基准项小的排在左边,比基准项大的排在右边。此时left为[1],right为[5,12,8,19,21,15];
left因为长度为1,所以必定为最小的,此时le
4000
ft不需要再执行排序。
right中第一项为5,其余的都排到right数组中。此时right为[12,8,19,21,15];
以此类推。
(后续再补充~) (≡ω≡.)
相关文章推荐
- JavaScript中三种常见的排序方法
- javascript 学习笔记 【数组排序方法】
- javascript 的几种排序方法
- 常见的几种排序方法
- javaScript学习笔记之 javaScript 常见方法 记录
- javascript 排序方法
- JavaScript 使用 sort() 方法从数值上对数组进行排序
- Java实现几种常见排序方法
- JavaScript中不同类型数据的排序方法
- javascript 排序方法
- 常见的javascript跨域通信方法
- JavaScript 使用sort()方法来给数组排序
- javascript实现Table排序的方法
- 七(2) . 最常见的JavaScript DOM方法实战-文档遍历
- JavaScript 调试常见报错以及修复方法
- 12种Javascript解决常见浏览器兼容问题的方法
- ASP.NET调用javascript脚本的常见方法小结
- JavaScript中关于数组的排序方法解读
- Javascript数组的排序 sort()方法和reverse()方法
- JavaScript常见封装方法