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 相关文章推荐
JS 如果改变span标签的是否隐藏属性
Oct 06 Javascript
解析JavaScript中delete操作符不能删除的对象
Dec 03 Javascript
调用innerHTML之后onclick失效问题的解决方法
Jan 28 Javascript
Jquery中ajax方法data参数的用法小结
Feb 12 Javascript
js计算文本框输入的字符数
Oct 23 Javascript
jquery拖拽效果完整实例(附demo源码下载)
Jan 14 Javascript
js采用concat和sort将N个数组拼接起来的方法
Jan 21 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
Jul 01 Javascript
ionic隐藏tabs的方法
Aug 29 Javascript
微信小程序 地图map详解及简单实例
Jan 10 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
Apr 10 Javascript
基于JS实现快速读取TXT文件
Aug 25 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+javascript制作带提示的验证码源码分享
2014/05/28 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
推荐9款炫酷的基于jquery的页面特效
2014/12/07 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
python验证码识别的实例详解
2016/09/09 Python
python append、extend与insert的区别
2016/10/13 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
python绘制雪景图
2019/12/16 Python
python关闭占用端口方式
2019/12/17 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
物业管理求职自荐信
2013/09/25 职场文书
英语系毕业生自荐信
2013/10/31 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
《满井游记》教学反思
2014/02/26 职场文书
门面房租房协议书
2014/08/20 职场文书
医院党建工作总结2015
2015/05/26 职场文书
少年犯观后感
2015/06/11 职场文书
学生会干部任命书
2015/09/21 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS
数据设计之权限的实现
2022/08/05 MySQL