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 相关文章推荐
给文字加上着重号的JS代码
Nov 12 Javascript
jQuery多项选项卡的实现思路附样式及代码
Jun 03 Javascript
js图片轮播效果实现代码
Apr 18 Javascript
jquery.cookie实现的客户端购物车操作实例
Dec 24 Javascript
JavaScript第一篇之实现按钮全选、功能
Aug 21 Javascript
浅析location.href跨窗口调用函数
Nov 22 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
Jun 17 Javascript
用vue构建多页面应用的示例代码
Sep 20 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
Sep 28 Javascript
vue-swiper的使用教程
Aug 30 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
Feb 02 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
Dec 02 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
中英文字符串翻转函数
2008/12/09 PHP
php Sql Server连接失败问题及解决办法
2009/08/07 PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
2011/01/07 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
2012/04/09 PHP
使用php实现截取指定长度
2013/08/06 PHP
php生成图片验证码的方法
2016/04/15 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
vue中七牛插件使用的实例代码
2017/07/28 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
python分割和拼接字符串
2013/11/01 Python
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
Flask数据库迁移简单介绍
2017/10/24 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
用Django写天气预报查询网站
2018/10/21 Python
对Python实现累加函数的方法详解
2019/01/23 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
巴西购物网站:Onofre Agora
2020/06/08 全球购物
留学经费担保书
2014/05/12 职场文书
团队拓展活动总结
2014/08/27 职场文书
好人好事演讲稿
2014/09/01 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
如何在C++中调用Python
2021/05/21 Python