js实现常见排序算法
来源:互联网 发布:慈溪行知职高地址全称 编辑:程序博客网 时间:2024/06/05 02:31
1,冒泡排序。
顾名思义,就是从头开始,每两个相邻元素相互比较,把大的放后面,这样子经过一次循环,最大的数就被冒泡到最后面了。下一次循环也是这样,只是需要循环的长度减一(排除最后一个数字)
function bubbleSort(arr){ var len = arr.length; for(var i = 0; i < len; i++){ for(var j = 0; j < len - 1 - i; j++){ if(arr[j] > arr[j+1]){ var tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } return arr;}
2,选择排序。就是每次从头到尾寻找一个最小的数字,把他放到最前面,下一次循环也是这样,循环长度减1(去掉最前面的最小数)
function selectSort(arr){ var minIndex,len = arr.length; for(var i = 0; i < len - 1; i++){ minIndex = i; for(var j = i + 1; j < len; j++){ if(arr[j] < arr[minIndex]){ minIndex = j; } } var tmp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = tmp; } return arr;}
3,选择排序。就跟打扑克一样,从左到右,每次把当前的数字跟前面的比较,比他小就插到他前面。在代码中就是先用current表示当前数字,跟他前面的数字比较,比他小就把前面的数字往后放一位,这样,就空出来一个位置。当前面的数字比current小,就把current放到空出来的位置。
function insertSort(arr){ var len = arr.length, current; for(var i = 1; i < len; i++){ current = arr[i]; for(var j = i - 1; j >= 0; j--){ if(arr[j] > current){ arr[j+1] = arr[j]; }else{ arr[j+1] = current; break; } } } return arr;}
4,快速排序,就是选择一个数字,一般选中间的数midValue,数组中比他小的放进left数组,比他大的放在right数组中。递归调用,若是数组长度小于2,直接返回数组。最后将left和midValue和right拼接起来。
function quickSort(arr){ var len = arr.length; if(len < 2){ return arr; } var midIndex = Math.floor(len/2); var midValue = arr.splice(midIndex,1); var left = [], right = []; arr.forEach(function(v){ if(v < midValue){ left.push(v); }else{ right.push(v); } }); return quickSort(left).concat(midValue, quickSort(right));}
阅读全文
0 0
- js实现常见排序算法
- js实现常见的排序算法
- 常见排序算法(js实现)
- JS 常见排序算法
- 常见排序算法实现
- 常见算法JS实现
- JS实现常见算法
- 常见的JS排序算法
- 常见排序的js实现
- js实现常见排序方法
- 排序算法JS实现
- Js实现排序算法
- js 实现排序算法
- 排序算法 JS实现
- js实现排序算法
- PHP实现常见排序算法
- PHP实现常见排序算法
- PHP实现常见排序算法
- 深度学习所需的python-学习笔记4
- 安卓获取手机短信(Contentprovider)
- 最短路径—Dijkstra算法(C#)
- 无线自动轮播,获取网络上的图片+scrollView+listView 联动
- 74HC573芯片介绍
- js实现常见排序算法
- [工作流activiti]-01.基础篇
- 计算机网络之基础篇
- (七)SpringIOC容器中bean生命周期
- 建立项目的webpack配置文件
- Web开发中,用到的4种会话跟踪技术
- 周中训练笔记12
- D3D11 加载静态3D模型(.obj格式)
- 阿里开源项目