5种JavaScript中常用的排序方法

01、冒泡排序

通过相邻数据元素的交换,逐步将待排序序列变为有序序列,如果前面的数据大于后面的数据,就将两值进行交换,将数据进行从小到大的排序,这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就到了数组第N-1个位置,排序进行完成。

var arr1 = [1, 5, 7, 6, 0, 9, 4];
function maopao(array){if(Array.isArray(array)){if (array.length == 1) {return array;}var temp = null;for (var i = 0; i < array.length; i++) {for (var j = 0; j < array.length - i - 1; j++) {if (array[j] > array[j + 1]) {temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}return array;}
}
console.log(maopao(arr1)); // 0,1,4,5,6,7,9

02、选择排序

(1)在未排序序列中找到最小元素,把它放到排序序列起始位置。
(2)从剩余未排序序列中继续寻找最小元素,然后放在排序序列末尾。
(3)以此类推,直至所有元素排序完成。

var arr2 = [1, 4, 2, 0, 3, 8, 6];
function xuanze(array) {if (Array.isArray(array)) {if (array.length == 1) {return array;}for (var i = 0; i < array.length - 1; i++) {var minIndex = i;for (var j = i + 1; j < array.length; j++) {minIndex = array[minIndex] < array[j] ? j : minIndex;}[array[i],array[minIndex]]=[array[minIndex], array[i]];}return array;}
}
console.log(xuanze(arr2)); // 8,6,4,3,2,1,0

03、递归排序(快排)

(1)从数列中取出一个数作为参考,分区过程。
(2)将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
(3)对左右区间重复第二步,直到各区间只有一个数。

var arr3 = [1, 9, 4, 2, 5, 3, 8, 6, 7, 0];
function digui(array) {if (Array.isArray(array)) {if (array.length <= 1) {return array;}var centerIndex = Math.ceil(array.length / 2);var cValue = array.splice(centerIndex, 1);var left = [];var right = [];array.forEach(function (value) {if (value > cValue) {left.push(value);}else {right.push(value);}});return digui(left).concat(cValue, digui(right));}
}
console.log(digui(arr3)); // 9,8,7,6,5,4,3,2,1,0

04、插入排序

将要排序的数组分成两部分,每次从 后面的部分取出索引最小的值插入前面适当的位置。

var arr4 = [1, 9, 4, 2, 5, 3, 0, 8, 6, 7];
function charu(array) {if (Array.isArray(array)) {if (arraylength == 1) {return array;}for (var i = 1; i < array.length; i++) {var current = array[i];var preIndex = i - 1;while (preIndex >= 0 && array[preIndex] < current) {array[preIndex + 1] = array[preIndex];preIndex--;}array[preIndex + 1] = current;}return array;}
}
console.log(charu(arr4)); // 9,8,7,6,5,4,3,2,1,0

05、sort()

var arr5 = [1, 9, 4, 2, 5, 3, 0, 8, 6, 7];
arr5.sort();
console.log(arr5); // 0,1,2,3,4,5,6,7,8,9

5种JavaScript中常用的排序方法相关推荐

  1. 更高效地刷OJ——Java中常用的排序方法,Array.sort(),Arrays.parallelSort(), Collections.sort()

    对于几大传统的排序算法我在前面博客中已经介绍过了,如果有想要了解的同学可以去看这篇博客八大排序:冒泡排序,选择排序,插入排序,堆排序,希尔排序,归并排序,计数排序但是我们在刷题过程中如果题目中没有对排 ...

  2. 40种Javascript中常用的使用小技巧【转】

    1. οncοntextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 < table border οncοntextmen ...

  3. 光滑噪声数据常用的方法_数据挖掘中常用的数据清洗方法

    是新朋友吗?记得先点蓝字关注我哦- 数据挖掘中 常用的数据清洗方法 在数据挖掘过程中,数据清洗主要根据探索性分析后得到的一些结论入手,然后主要对四类异常数据进行处理,分别是缺失值(missing va ...

  4. php中this的使用技巧,JavaScript中this关键字使用方法详解

    JavaScript中this关键字使用方法详解 在面向对象编程语言中,对于this关键字我们是非常熟悉的.比如C++.C#和Java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了 ...

  5. html 点击收藏效果,收藏Javascript中常用的55个经典技巧

    收藏Javascript中常用的55个经典技巧 更新时间:2007年08月12日 15:39:21   作者: 1. οncοntextmenu="window.event.returnVa ...

  6. lammps和atomsk中常用的建模方法

    文章目录 1.Atomsk生成刃型位错 2.Atomsk生成任意角度晶界 3.Atomsk生成孪晶 4.Atomsk生成非晶 5.合金多晶结构建模 6.Atomsk建立管道类模型 7.Atomsk建立 ...

  7. 统计计量 | 统计学中常用的数据分析方法汇总

    来源:数据Seminar本文约10500字,建议阅读15+分钟 统计学中常用的数据分析方法汇总. Part1描述统计 描述统计是通过图表或数学方法,对数据资料进行整理.分析,并对数据的分布状态.数字特 ...

  8. javascript中常用的

    javascript中常用的 1.javascript中构造equals().trim()方法并应用 1 String.prototype.Trim = function() 2 { 3 return ...

  9. java js获取css方法_5种JavaScript和CSS交互的方法

    原标题:5种JavaScript和CSS交互的方法 随着浏览器不断的升级改进,CSS和Java之间的界限越来越模糊.本来它们是负责着完全不同的功能,但最终,它们都属于网页前端技术,它们需要相互密切的合 ...

最新文章

  1. 独家 | 使用Python的LDA主题建模(附链接)
  2. SQL CROSS JOIN
  3. 使用 Navicat Premium12 创建报表
  4. 读《操作系统之哲学原理》的一点感想
  5. jsp 默认select option 默认选中方法
  6. MSN Direct 日志系统浅析
  7. centos7加入Windows域
  8. 手机王者荣耀怎么投屏到电脑
  9. html怎么设置文字居中对齐
  10. 郭金东金浦集团荣登“2019中国民营企业500强”和“2019中国民营企业制造业500强”榜单
  11. 如何防止form表单的重复提交
  12. 南京大学计算机实验教程,南京大学 计算机系统基础 课程实验 2018(PA0-1)
  13. NOI——Bless All
  14. wav 转换到 flac
  15. mysql 查询出现次数最多的_MySQL查询重复出现次数最多的记录
  16. 通过OpenCV识别QR二维码
  17. 华为 社招 C语言笔试,华为笔试C语言笔试题之3
  18. [Vue]非父子组件传值(bus/总线/观察者模式/发布订阅模式)
  19. Android官方文档—APP清单(uses-feature)
  20. git统计历史上某一段时间代码的修改量

热门文章

  1. 深度学习核心技术精讲100篇(五十七)- 自动驾驶车会看地图吗?它是如何认路、找准定位的?
  2. 机器学习第5天:逻辑回归
  3. 【Linux】2_文件和用户管理
  4. 无需任何启动盘,在windows系统上一键安装linux(ubuntu)双系统的方法!
  5. 使用flink Table Sql api来构建批量和流式应用(1)Table的基本概念
  6. 从源码角度深入分析ant
  7. Understanding Extension Class Loading--官方
  8. weblogic:local class incompatible: stream classdesc serialVersionUID
  9. Typescript中使用Axios
  10. Pandas中兼并数组和字典功能的Series 2013-03-24 11:24:00 分类: Python/Ruby In [2]: # 这段代码用于并排显示多个Series对象 from it