JavaScript算法(实例三)数组排序--冒泡排序 / sort() / reverse() / 比较函数
冒泡排序
冒泡排序是让数组中的两个相邻数字进行比较,数组中较大的值向下沉,值小的上浮,就类似于水中的气泡,较大的下沉,较小的上升,慢慢冒出来。简单的说就是数值大的会慢慢往前排,数据值小的会慢慢向后排,最终实现由小到达排列,最小的排在最前,最大的排到最后。
var arr = [ 91, 76, 96, 23, 93 ];
console.log(arr);
for(var i=0;i<arr.length;i++){for(var j=0;j<arr.length-i-1;j++){if(arr[j]>arr[j+1]){var temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}
}
console.log(arr);/*
[ 91, 76, 96, 23, 93 ]
[ 23, 76, 91, 93, 96 ]*/
sort()
sort() 方法用于对数组的元素进行排序,并返回数组。
var arr = [ 91, 76, 96, 23, 93 ];
console.log(arr);
console.log(arr.sort());
/*
[ 91, 76, 96, 23, 93 ]
[ 23, 76, 91, 93, 96 ]*/
注意:sort() 方法的默认排序顺序是根据字符串UniCode码。因为排序是按照字符串UniCode码的顺序进行排序的,所以首先应该把数组元素都转化成字符串(如有必要),以便进行比较。
reverse()
reverse() 方法用来反转数组中的元素,可以使用它以降序对数组进行排序。
var arr = [ 91, 76, 96, 23, 93 ];
console.log(arr);
arr.sort();
arr.reverse();
console.log(arr);
/*
[ 91, 76, 96, 23, 93 ]
[ 96, 93, 91, 76, 23 ]*/
比较函数
比较函数用来比较两个值的大小,然后返回一个用于说明这两个值的相对顺序的数字。
function(a, b){return a-b;
}
比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,即 a - b 小于零,则返回一个小于零的值,数组将按照升序排列。
- 若 a 等于 b,即 a - b 等于零,则返回 0,数组不再排序。
- 若 a 大于 b,即 a - b 大于零,则返回一个大于零的值,数组将按照降序排列。
var arr = [ 91, 76, 96, 23, 93 ];
arr.sort(function(a, b){return a - b; //升序
});
console.log(arr);
//[ 23, 76, 91, 93, 96 ]
arr.sort(function(a, b){return b - a; //降序
});
console.log(arr);
//[ 96, 93, 91, 76, 23 ]
JavaScript 数组经常会包含对象,即使对象拥有不同数据类型的属性,sort() 方法仍可用于对数组进行排序,解决方法是通过比较函数来对比属性值。
var cars = [{type:"Volvo", year:2016},{type:"Saab", year:2001},{type:"BMW", year:2010}
];
cars.sort(function(a, b){return a.year - b.year;
});
console.log(cars);
/*
[{ type: 'Saab', year: 2001 },{ type: 'BMW', year: 2010 },{ type: 'Volvo', year: 2016 }
]*/
JavaScript算法(实例三)数组排序--冒泡排序 / sort() / reverse() / 比较函数相关推荐
- JAVA常见算法题(三十一)---冒泡排序
package com.jege.spring.boot.hello.world;/*** java算法之冒泡排序<br>* 将数组按照从大到小的顺序排列<br>* * * @ ...
- javascript算法汇总(持续更新中)
1. 线性查找 1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset ...
- python实现冒泡排序完整算法_利用python实现冒泡排序算法实例代码
利用python实现冒泡排序算法实例代码 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数 ...
- 冒泡排序算法实例详解
冒泡排序算法实例详解 1.复杂度与稳定性 算法时间复杂度 最坏情况:O(n^2) 最好情况:O(n) 平均情况:O(n^2) 空间复杂度:S(n)=O(1) 稳定性:稳定排序 2.过程介绍(以顺序为例 ...
- 【排序算法系列 1】冒泡排序(Bubble Sort)
[排序算法系列 1]冒泡排序 [排序算法系列 2]选择排序 [排序算法系列 3] 插入排序 [排序算法系列 4] 高级排序--希尔排序(插入排序的改进) [排序算法系列 5] 高级排序--归并排序 [ ...
- JavaScript算法相关
1. 排序 1.1.冒泡排序 每一轮比较,从左至右交换相邻,每轮结束,最后一个为最大 下一轮,需要比较的个数 - 1 j < len - i (范围动态缩小) 共 len - 1 轮比较 fun ...
- c语言排序需要插空的最小次数,C语言数组排序——冒泡排序、选择排序、插入排序...
一.冒泡排序 原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置. 然后比较第二.第三个--直到比较第n-1个和第n个,此时,每一次比较都 ...
- PHP数据结构算法实例
来源:http://blog.sina.com.cn/s/blog_788fd8560100plj3.html PHP已经面世十几年了,数据结构更是数倍于PHP生龄,但很不理解的是语言界竟无一人出版使 ...
- JavaScript算法与数据结构——字典详解
字典是一种以键-值对的形式存储数据的数据结构,接下来我们将使用JavaScript实现字典数据结构. 1.定义字典类 由于比较字典数据结构比较简单,就直接上代码好了. class Dictionary ...
最新文章
- windows server 守护进程nssm
- step4 . day5 进程与进程的创建
- 【转】测试人员的思想理念和工作方法
- junit rule_使用@Rule在JUnit中测试文件和目录
- python3编程入门先学什么_自学编程入门,先学什么语言好?
- 树形动规_(战略游戏)
- Kubernetes(K8s) 1.14.3常用操作命令
- javascript 正则表达式学习
- python实现数据库查询导出到excel案例
- Android 权限大全
- 记录一下学习EFCore中的基础知识
- 服务器被入侵了,怎么防范服务器被黑客入侵情况
- 2017年总结,2018新开始
- html 列表 表格 form表单 文本域 label
- 逻辑函数(表示方法、形式转换、化简、最小项、最大项)
- 20P44 Premiere预设600个摄像机动画信号干扰调色视觉特效pr模板
- android禁止安装第三方app,Android6.0 禁止安装未知来源应用
- Nginx 优化及原理
- p牛java安全漫谈学习笔记(2)_反序列化与urldns链(基础)
- AFNetwork 2.0在请求时报错code=-1016 和 3840
热门文章
- Centos7 防火墙开启端口
- PHP获取input中的值相同报错,laravel单元测试之phpUnit中old()函数报错解决_php实例...
- mysql配置命令_MySQL基本配置命令总结
- JBox2D学习 - 小球碰撞实例 .
- create-react-app 脚手架工具完善自己所需要的入口文件
- P4172 [WC2006]水管局长 LCT维护最小生成树
- MySQL的binlog及关闭方法
- 基于http的netty demo
- 线性表的链式存储集成
- muduo源代码分析--Reactor模式在muduo中的使用