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 相关文章推荐
javascript中的prototype属性使用说明(函数功能扩展)
Aug 16 Javascript
javascript 实现简单的table排序及table操作练习
Dec 28 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
Dec 15 Javascript
javascript日期格式化方法汇总
Oct 04 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
Jun 16 Javascript
JavaScript生成.xls文件的代码
Dec 22 Javascript
JavaScript提高加载和执行效率的方法
Feb 03 Javascript
100多个基础常用JS函数和语法集合大全
Feb 16 Javascript
Vue中对比scoped css和css module的区别
May 17 Javascript
JavaScript时间与时间戳的转换操作实例分析
Dec 07 Javascript
JS数组扁平化(flat)方法总结详解
Jun 24 Javascript
如何使用three.js 制作一个三维的推箱子游戏
Jul 29 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 管理系统程序中的后门
2009/08/05 PHP
php 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
浅谈PHP5.6 与 PHP7.0 区别
2019/10/09 PHP
js DOM的学习笔记
2011/12/22 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
Python入门教程之运算符与控制流
2016/08/17 Python
Django 使用logging打印日志的实例
2018/04/28 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
如何在python中执行另一个py文件
2020/04/30 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
Python中的特殊方法以及应用详解
2020/09/20 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
德国电子商城:ComputerUniverse
2017/04/21 全球购物
关于Assembly命名空间的三个面试题
2015/07/23 面试题
中软国际Java程序员机试题
2012/08/19 面试题
党校培训思想汇报
2014/01/03 职场文书
红旗方阵解说词
2014/02/12 职场文书
公司周年庆典标语
2014/10/07 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
离婚代理词范文
2015/05/23 职场文书
电工生产实习心得体会
2016/01/22 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS