详解JS中的快速排序与冒泡


Posted in Javascript onJanuary 10, 2017

1.快速排序思想:

1.1 先找数组的最中间的一个数为基准

1.2 把数组通过此基准分为小于基准的left数组和大于基准的right数组,

1.3 递归重复上面的两个步骤,

代码如下:

function quickSort(arr) {
  if (arr.length <=1 ){
    return arr;
  }
  var middleIndex = Math.floor(arr.length / 2);
  var left = [];
  var right = [];
  var middle = arr.splice(middleIndex,1)[0];
  for (var i = 0; i < arr.length; i++) {
    if ( arr[i] > middle) {
      right.push(arr[i]);
    } else {
      left.push(arr[i]);
    }
  }
  return quickSort(left).concat(middle,quickSort(right));
}

2. 冒泡排序思想:

  2.1 两两比较,交换位置

2.2 循环数组

代码如下:

function bubbleSort(arr) {
  for (var i = 0; i < arr.length - 1; i++) {
    for (var j = 0; j < arr.length -1 -i; j++) {
      if( arr[j] > arr[j+1]){
        var temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;
      }
    }
  }
  return arr;
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jQuery 性能优化指南(3)
May 21 Javascript
javascript 得到变量类型的函数
May 19 Javascript
用dtree实现树形菜单 dtree使用说明
Oct 17 Javascript
javascript的解析执行顺序在各个浏览器中的不同
Mar 17 Javascript
整理JavaScript创建对象的八种方法
Nov 03 Javascript
Sort()函数的多种用法
Mar 20 Javascript
基于javascript实现简单的抽奖系统
Apr 15 Javascript
15个非常实用的JavaScript代码片段
Dec 18 Javascript
jQuery操作之效果详解
May 19 jQuery
详解Vue中组件传值的多重实现方式
Aug 16 Javascript
微信小程序实用代码段(收藏版)
Dec 17 Javascript
JavaScript实现网页下拉菜单效果
Nov 20 Javascript
BootStrapTable 单选及取值的实现方法
Jan 10 #Javascript
VueJs路由跳转——vue-router的使用详解
Jan 10 #Javascript
js自定义QQ菜单效果
Jan 10 #Javascript
js实现将json数组显示前台table中
Jan 10 #Javascript
详解Vue自定义过滤器的实现
Jan 10 #Javascript
JS实现的表头列头固定页面功能示例
Jan 10 #Javascript
VUE JS 使用组件实现双向绑定的示例代码
Jan 10 #Javascript
You might like
开源SNS系统-ThinkSNS
2008/05/18 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
php INI配置文件的解析实现分析
2011/01/04 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
简单实现js倒计时功能
2017/02/13 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
2020/05/14 Javascript
Python在Console下显示文本进度条的方法
2016/02/14 Python
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
python放大图片和画方格实现算法
2018/03/30 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
python中count函数简单用法
2020/01/05 Python
django 读取图片到页面实例
2020/03/27 Python
python 弧度与角度互转实例
2020/04/15 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
企业演讲稿范文
2013/12/28 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
七年级思品教学反思
2016/02/20 职场文书
利用python进行数据加载
2021/06/20 Python
HTML中的表格元素介绍
2022/02/28 HTML / CSS
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记