js实现数组冒泡排序、快速排序原理


Posted in Javascript onMarch 08, 2016

本文为大家分享了js数组冒泡排序、快速排序的实现原理,供大家参考,具体内容如下

1、冒泡排序

随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果。

var arr = [3,1,4,2,5,21,6,15,63];

function sortA(arr){
 for(var i=0;i<arr.length-1;i++){
 for(var j=i+1;j<arr.length;j++){
  //获取第一个值和后一个值比较
 var cur = arr[i];
 if(cur>arr[j]){
  // 因为需要交换值,所以会把后一个值替换,我们要先保存下来
 var index = arr[j];
  // 交换值
 arr[j] = cur;
 arr[i] = index;
 }
 }
 }
 return arr;
}
//因为一次循环只能交换一个最大的值,所以需要再套一层for循环。

2、快速排序:

 从数组的中间拿一个值,然后通过这个值挨个和数组里面的值进行比较,如果大于的放一边,小于的放一边,然后把这些合并,再进行比较,如此反复即可。

var arr = [3,1,4,2,5,21,6,15,63];
function sortA(arr){
 // 如果只有一位,就没有必要比较
 if(arr.length<=1){
 return arr;
 }
 // 获取中间值的索引
 var len = Math.floor(arr.length/2);
 // 截取中间值
 var cur = arr.splice(len,1);
 // 小于中间值放这里面
 var left = [];
 // 大于的放着里面
 var right = [];
 for(var i=0;i<arr.length;i++){
 // 判断是否大于
 if(cur>arr[i]){
 left.push(arr[i]);
 }else{
 right.push(arr[i]);
 }
 }
 // 通过递归,上一轮比较好的数组合并,并且再次进行比较。
 return sortA(left).concat(cur,sortA(right));
}

想要学习更多关于javascript排序的内容,请点击《javascript排序方法实现》

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
Sep 19 Javascript
jQuery图片滚动图片的效果(另类实现)
Jun 02 Javascript
JS中typeof与instanceof之间的区别总结
Nov 14 Javascript
深入理解JavaScript编程中的同步与异步机制
Jun 24 Javascript
JS正则表达式验证密码格式的集中情况总结
Feb 23 Javascript
JS路由跳转的简单实现代码
Sep 21 Javascript
windows下更新npm和node的方法
Nov 30 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
Dec 19 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
Nov 02 Javascript
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
vue动态配置模板 'component is'代码
Jul 04 Javascript
OpenLayers3实现测量功能
Sep 25 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 #Javascript
javascript html实现网页版日历代码
Mar 08 #Javascript
一道关于JavaScript变量作用域的面试题
Mar 08 #Javascript
理解javascript函数式编程中的闭包(closure)
Mar 08 #Javascript
jQuery实现带水平滑杆的焦点图动画插件
Mar 08 #Javascript
javascript对象的创建和访问
Mar 08 #Javascript
js获取当前日期时间及其它日期操作汇总
Mar 08 #Javascript
You might like
php实现简单洗牌算法
2013/06/18 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
jquery 分页控件实现代码
2009/11/30 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
js实现日期级联效果
2014/01/23 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
Python中struct模块对字节流/二进制流的操作教程
2017/01/21 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
pycharm设置默认的UTF-8编码模式的方法详解
2020/06/01 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
公司承诺书格式
2014/05/21 职场文书
2014年质检工作总结
2014/11/26 职场文书
碧霞祠导游词
2015/02/09 职场文书
入伍通知书
2015/04/23 职场文书
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技
使用python绘制横竖条形图
2022/04/21 Python