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 相关文章推荐
两个DIV等高的JS的实现代码
Dec 23 Javascript
固定表格行列(expression)在IE下适用
Jul 25 Javascript
jQuery下的动画处理总结
Oct 10 Javascript
浏览器中url存储的JavaScript实现
Jul 07 Javascript
Bootstrap每天必学之日期控制
Mar 07 Javascript
详解基于angular路由的requireJs按需加载js
Jan 20 Javascript
使用jQuery卸载全部事件的思路详解
Apr 03 jQuery
php简单数据库操作类的封装
Jun 08 Javascript
react-native android状态栏的实现
Jun 15 Javascript
vue中的自定义分页插件组件的示例
Aug 18 Javascript
详解ES6 Symbol 的用途
Oct 14 Javascript
express+vue+mongodb+session 实现注册登录功能
Dec 06 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
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
javascript 函数式编程
2007/08/16 Javascript
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
jQuery 处理表单元素的代码
2010/02/15 Javascript
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
python中类的一些方法分析
2014/09/25 Python
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
2018/01/10 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
Python对wav文件的重采样实例
2020/02/25 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
计算机求职自荐信范文
2014/04/19 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
党员民主评议个人总结
2014/10/20 职场文书
业务员管理制度范本
2015/08/06 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
Redis分布式锁Redlock的实现
2021/08/07 Redis
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL
gojs实现蚂蚁线动画效果
2022/02/18 Javascript