5种JavaScript中常用的排序方法
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中常用的排序方法相关推荐
- 更高效地刷OJ——Java中常用的排序方法,Array.sort(),Arrays.parallelSort(), Collections.sort()
对于几大传统的排序算法我在前面博客中已经介绍过了,如果有想要了解的同学可以去看这篇博客八大排序:冒泡排序,选择排序,插入排序,堆排序,希尔排序,归并排序,计数排序但是我们在刷题过程中如果题目中没有对排 ...
- 40种Javascript中常用的使用小技巧【转】
1. οncοntextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 < table border οncοntextmen ...
- 光滑噪声数据常用的方法_数据挖掘中常用的数据清洗方法
是新朋友吗?记得先点蓝字关注我哦- 数据挖掘中 常用的数据清洗方法 在数据挖掘过程中,数据清洗主要根据探索性分析后得到的一些结论入手,然后主要对四类异常数据进行处理,分别是缺失值(missing va ...
- php中this的使用技巧,JavaScript中this关键字使用方法详解
JavaScript中this关键字使用方法详解 在面向对象编程语言中,对于this关键字我们是非常熟悉的.比如C++.C#和Java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了 ...
- html 点击收藏效果,收藏Javascript中常用的55个经典技巧
收藏Javascript中常用的55个经典技巧 更新时间:2007年08月12日 15:39:21 作者: 1. οncοntextmenu="window.event.returnVa ...
- lammps和atomsk中常用的建模方法
文章目录 1.Atomsk生成刃型位错 2.Atomsk生成任意角度晶界 3.Atomsk生成孪晶 4.Atomsk生成非晶 5.合金多晶结构建模 6.Atomsk建立管道类模型 7.Atomsk建立 ...
- 统计计量 | 统计学中常用的数据分析方法汇总
来源:数据Seminar本文约10500字,建议阅读15+分钟 统计学中常用的数据分析方法汇总. Part1描述统计 描述统计是通过图表或数学方法,对数据资料进行整理.分析,并对数据的分布状态.数字特 ...
- javascript中常用的
javascript中常用的 1.javascript中构造equals().trim()方法并应用 1 String.prototype.Trim = function() 2 { 3 return ...
- java js获取css方法_5种JavaScript和CSS交互的方法
原标题:5种JavaScript和CSS交互的方法 随着浏览器不断的升级改进,CSS和Java之间的界限越来越模糊.本来它们是负责着完全不同的功能,但最终,它们都属于网页前端技术,它们需要相互密切的合 ...
最新文章
- 独家 | 使用Python的LDA主题建模(附链接)
- SQL CROSS JOIN
- 使用 Navicat Premium12 创建报表
- 读《操作系统之哲学原理》的一点感想
- jsp 默认select option 默认选中方法
- MSN Direct 日志系统浅析
- centos7加入Windows域
- 手机王者荣耀怎么投屏到电脑
- html怎么设置文字居中对齐
- 郭金东金浦集团荣登“2019中国民营企业500强”和“2019中国民营企业制造业500强”榜单
- 如何防止form表单的重复提交
- 南京大学计算机实验教程,南京大学 计算机系统基础 课程实验 2018(PA0-1)
- NOI——Bless All
- wav 转换到 flac
- mysql 查询出现次数最多的_MySQL查询重复出现次数最多的记录
- 通过OpenCV识别QR二维码
- 华为 社招 C语言笔试,华为笔试C语言笔试题之3
- [Vue]非父子组件传值(bus/总线/观察者模式/发布订阅模式)
- Android官方文档—APP清单(uses-feature)
- git统计历史上某一段时间代码的修改量
热门文章
- 深度学习核心技术精讲100篇(五十七)- 自动驾驶车会看地图吗?它是如何认路、找准定位的?
- 机器学习第5天:逻辑回归
- 【Linux】2_文件和用户管理
- 无需任何启动盘,在windows系统上一键安装linux(ubuntu)双系统的方法!
- 使用flink Table Sql api来构建批量和流式应用(1)Table的基本概念
- 从源码角度深入分析ant
- Understanding Extension Class Loading--官方
- weblogic:local class incompatible: stream classdesc serialVersionUID
- Typescript中使用Axios
- Pandas中兼并数组和字典功能的Series 2013-03-24 11:24:00 分类: Python/Ruby In [2]: # 这段代码用于并排显示多个Series对象 from it