JS常用排序方法实例代码解析


Posted in Javascript onMarch 03, 2020

有些代码一两个月都会忘了,有空多做下总结,记录下来,等需要用到的时候可以来翻翻总结的博客。写技术博客,对自己是一种总结,对别人,是一种参考。

1.sort()方法

var ar1=[2,4,6,8,1,3]
var ar2=[2,16,36,8,56]
ar1.sort()
ar2.sort()//这个方法值只能排序第一位数 也可以字符串进行排序
console.log(ar1)//[1,2,3,4,6,8]
console.log(ar2)//[16, 2, 36, 56, 8]

ar2.sort(function(a,b){
  return a-b //a-b为升序
  //return b-a //b-a为降序
})
console.log(ar2)//[2, 8, 16, 36, 56]

2.reverse()方法

var ar1=[2,4,6,8,1,3]
ar1.reverse()//此方法为倒序,也就是反过来。并不会进行大小排序
console.log(ar1)//[3, 1, 8, 6, 4, 2]

3.冒泡排序

//每轮依次比较相邻两个数的大小,后面比前面小则交换
var b=0//设置用来调换位置的值
var a=[1,9,33,2,5,34,23,98,14]//冒泡排序
for(var i=0;i<a.length;i++){
  for(var j=0;j<a.length;j++){
    if(a[j]>a[j+1]){
      b=a[j]
      a[j]=a[j+1]
      a[j+1]=b
    }
  }
}
console.log(a)//[1, 2, 5, 9, 14, 23, 33, 34, 98]

4.选择排序

//拿第一个数与后面数相比较,如果比后面的数大则交换
//拿第二个数与后面的数比较,如果比后面的数大则交换
//直到比较到倒数第二个数,最后一个数不用比较
var b=0//设置用来调换位置的值
var a=[1,9,33,2,5,34,23,98,14]//冒泡排序
for(var i=0;i<a.length;i++){
  for(var j=i;j<a.length;j++){
    if(a[j]>a[j+1]){
      b=a[j]
      a[j]=a[j+1]
      a[j+1]=b
    }
  }
}
console.log(a)//[1, 2, 5, 9, 14, 23, 33, 34, 98]

5.快速排序

先从数列中取出一个数作为基准数

分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边

再对左右区间重复第二步,直到各区间只有一个数

function quickSort(arr, i, j) {
 if(i < j) {
  let left = i;
  let right = j;
  let mid = Math.floor((left+right)/2);
  let temp = arr[left];
  arr[left] = arr[mid];
  arr[mid] = temp;
  let pivot = arr[left];
  while(i < j) {
   while(arr[j] >= pivot && i < j) { // 从后往前找比基准小的数
    j--;
   }
   if(i < j) {
    arr[i++] = arr[j];
   }
   while(arr[i] <= pivot && i < j) { // 从前往后找比基准大的数
    i++;
   }
   if(i < j) {
    arr[j--] = arr[i];
   }
  }
  arr[i] = pivot;
  quickSort(arr, left, i-1);
  quickSort(arr, i+1, right);
  return arr;
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jquery实现拆分姓名的方法(纯JS版)
May 08 Javascript
JS小游戏之象棋暗棋源码详解
Sep 25 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
Jan 27 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
Jan 28 Javascript
jQuery 遍历函数详解
Jul 05 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
Aug 15 Javascript
微信小程序 Tab页切换更新数据
Jan 05 Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
Apr 13 Javascript
webpack自动打包和热更新的实现方法
Jun 24 Javascript
构建大型 Vue.js 项目的10条建议(小结)
Nov 14 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
Jun 05 Javascript
基于react项目打包css引用路径错误解决方案
Oct 28 Javascript
JS面向对象编程实现的Tab选项卡案例详解
Mar 03 #Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
Mar 03 #Javascript
小程序接入腾讯位置服务的详细流程
Mar 03 #Javascript
vue.js this.$router.push获取不到params参数问题
Mar 03 #Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
Mar 03 #Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
Mar 03 #Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
Mar 03 #Javascript
You might like
变量在 PHP7 内部的实现(一)
2015/12/21 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
原生js封装运动框架的示例讲解
2017/10/01 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Django中redis的使用方法(包括安装、配置、启动)
2018/02/21 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
python实现代码审查自动回复消息
2021/02/01 Python
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
趣味活动策划方案
2014/02/08 职场文书
个人函授自我鉴定
2014/03/25 职场文书
服务之星事迹材料
2014/05/03 职场文书
内科护士节演讲稿
2014/09/11 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
孙振耀退休感言
2015/08/01 职场文书
Elasticsearch 聚合查询和排序
2022/04/19 Python
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js