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

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

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;
 }
}

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

(0)

相关推荐

  • JS桶排序的简单理解与实现方法示例

    本文实例讲述了JS桶排序的简单理解与实现方法.分享给大家供大家参考,具体如下: 桶排序,利用编号分组存储数字,再利用编号合并分组的一种算法排序. 举个易于理解的例子: 一组数字,9,3,4,0,2,8,5,1,7,6,11,10,18,15,17,12,16,13,19,14 我们把这组数字分组编号成10个桶装起来,但怎么编号分组呢? 这里我们利用数字范围来对数字进行分桶.首先,最大数减去最小数,获取这组数字的取值范围,然后,我们让这个取值范围除以桶数,获取一个桶的取值范围,既然知道一个桶的取值

  • JS简单数组排序操作示例【sort方法】

    本文实例讲述了JS简单数组排序操作.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>www.jb51.net 数组排序</title> </head> <body> <script> window.onload = function()

  • 基于js 各种排序方法和sort方法的区别(详解)

    今天突发奇想,想明白sort方法是否比各种排序都有优势,所以就参考别人的代码,做了一个测试,结果令人惊讶啊,上代码. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0,max

  • jQuery实现使用sort方法对json数据排序的方法

    本文实例讲述了jQuery实现使用sort方法对json数据排序的方法.分享给大家供大家参考,具体如下: 如何对后台返回过来的json数据按照数据中的某一项进行排序呢. 首先看一下排序前的json数据: { "result":[ { "cid":1, "name":"aaa", "price":1000 },{ "cid":2, "name":"bbb&qu

  • JS实现给数组对象排序的方法分析

    本文实例讲述了JS实现给数组对象排序的方法.分享给大家供大家参考,具体如下: JS中给数组对象排序 假设有一个对象数组,我们想要根据某个对象属性对数组进行排序.而传递给数组sort()方法的比较函数要接收2个参数,即要比较的值. 可是,我们需要一种方式指明按照哪个属性来排序. 要解决这个问题,可以定义一个函数,它接收一个属性名,然后根据这个属性名来创建一个比较函数. function createComprisonFunction(propertyName){ return function(o

  • vue.js或js实现中文A-Z排序的方法

    实现中文按照A-Z的方法,可以在vue的methods里面写入: methods:{ pySort:function(arr,empty){ var $this = this; if(!String.prototype.localeCompare) return null; var letters = "ABCDEFGHJKLMNOPQRSTWXYZ".split(''); var zh = "阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀".split('');

  • JavaScript插入排序算法原理与实现方法示例

    本文实例讲述了JavaScript插入排序算法原理与实现方法.分享给大家供大家参考,具体如下: 一.插入排序简介: 想象我们斗地主,摸排阶段,手里的牌都按照从小到大排序.如果每摸一张牌,我们就把他插入合适的位置,使得它比后面位置的牌小,比前面位置的牌大或者相等. 类似这样的一种排序方法就是插入排序: 在一个数组a中,我们要实现升序排序,假设我们前面已经对a[0]到a[k]排好序,现在需要将a[k+1]的值放入合适的位置. (为简便,此处不讨论k的取值范围,只是用它代表数组的某个位置) 1.首先,

  • JS插入排序简单理解与实现方法分析

    本文实例讲述了JS插入排序简单理解与实现方法.分享给大家供大家参考,具体如下: 在这里,我详细的讲一下我个人对于插入排序的理解. 每个人对于事物的理解都是不一样的,因为每个人对世界万物的看法和思考方式都不一样.因此,对于排序算法,我想每个人都有自己的理解方式,所以,虽然博客园里有很多关于排序的文章,但那只是其他人对这几个排序的理解方式,而笔者也有自己的理解方式,所以,笔者也就没有在意博客园写了那么多关于排序的文章而还在这里写下个人的见解了. 对于插入排序,笔者是这么理解的: 插入排序就是把一组数

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

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

  • 原生js实现each方法实例代码详解

    jquery里面有个each方法,将循环操作简化.便捷. 随后es出了个forEach方法,两个虽然用法相近,但是不能处理对象类型.且无法通过return true达到continue效果. 此外还有个every方法,该方法虽然可以实现continue效果,但是在处理类数组与对象类型时,完全无用. 在不使用 jquery 的 each 方法时,该如何处理:或者说用原生如何来实现? 前些前写了个类库: jTool , 其中就实现了该方法. 简单实现: // 通过字面量方式实现的函数each var

  • js函数排序的实例代码

    复制代码 代码如下: var as = [1,2,11,3434,3,4545,33,55,0];as.sort(); //这个排序是按照字典排序//自定义按照数字排序function sortByNum(a,b){return parseInt(a) - parseInt(b);}as.sort(sortByNum);//按照对象来排序//定义一个person对象function Person(name.age){this.name=name;this.age=age;}var p1 = ne

  • xtemplate node.js 的使用方法实例解析

    工程下安装XTemplate并使用它的方法实例说明: 1.安装xtpl 复制代码 代码如下: npm install xtpl xtemplate --save 2.在views目录添加test.xtpl文件,其内容为 this is {{title}}! 4.集成到Express中,只需要在app.js中,设置模板引擎即可 var print = require('./routes/print'); //此行代码放入app.js的require 声明代码段下边 app.set('view en

  • c语言5个常用的排序算法实例代码

    1.插入排序 基本思想:插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕. void insertSort(vector<int>& nums) { int k = 0; for (int i = 0; i < nums.size(); ++i) { int temp = nums[i]; int j = i; for (; j > 0 && temp < nums[j-1]; --j) nums[j] =

  • JS创建事件的三种方法(实例代码)

    1.普通的定义方式 <input type="button" name="Button" value="确定" onclick="Sfont=prompt('请在文本框中输入红色','红色',' 提示框 '); if(Sfont=='红色'){ form1.style.fontFamily='黑体'; form1.style.color='red'; }" /> 这是最常见的一种定义方式,直接将JS事件定义在需要的

  • Vue.js子组件向父组件通信的方法实例代码详解

    一.场景描述: 曾经有个电商项目,其中有个"老带新"模块,而且该模块新增的入口很多,但是新增后展示效果还不一样,当时就考虑将新增的组件单独拿出来,其实就是一个子组件向父组同步数据的过程. 当然,背景不重要了,关键是看实现的方式. 二.场景展示效果 (PS:展示效果请忽略美感) 三.如何实现 注意:Vuejs架构通过vue-cli 3.X搭建的项目,版本无所谓. 1.先看下目录体系,下图子组件放在components文件夹内,模拟子组件为itemAdd.vue,父组件视图放在views文

  • AngularJs表单验证实例代码解析

    常用的表单验证指令如下详情: 1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type="text" required /> 2. 最小长度 验证表单输入的文本长度是否大于某个最小值,在输入字段上使用指令ng-minleng= "{number}": <input type="text" ng-minlength="5" /> 3.

  • 28个JS常用数组方法总结

    目录 1.Array.map() 2.Array.filter() 3.Array.reduce() 4.Array.reduceRight() 5.Array.fill() 6.Array.find() 7.Array.indexOf() 8.lastIndexOf() 9.Array.findIndex() 10.Array.includes() 11.Array.pop() 12.Array.push() 13.Array.shift() 14.Array.unshift() 15.Arr

  • JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)

    最近做了个项目,其中有项目需求是要实现跑马灯抽奖效果,实现此功能主要用到js相关知识,废话不多说,感兴趣的朋友可以阅读下全文. 开始之前先来看上篇文章遗漏的两个问题和几个知识点,是自己重构的过程中需要用到的: 1.移动端1px像素线的问题 对于设计师给我的手机端网页的设计稿都是2倍图.按照道理来说,在写网页的时候,所有对象的实际尺寸都是会除2.但是对于1像素的线呢? 先来看两张图,设计稿的效果: 在三星 S4下的实际显示效果: 可以看到这个时候1px的线竟然显示不出来了.这个问题是跟 S4手机的

随机推荐