sort()函数到底是怎样进行数字排序的
很多人会用sort(),并不见得知道它具体是怎样给数字排序的。其实不知道也行,会用就可以,感兴趣的可以来看看。
var numberArray = [2,4,1,3];
numberArray.sort(function(a,b){
return a-b; //从小到大
})
用过sort()函数的都知道上面代码其实就是将数组里的元素从小到大排序,返回结果[1,2,3,4]。
为了弄清楚sort()是怎样进行数字比较和移动,最后排好序的,我加三行代码,让它把每一次比较的结果,以及a和b的值都显示在控制台上。
var numberArray = [2,4,1,3]; res=numberArray.sort(function(a,b){
console.log(numberArray);
console.log(a);
console.log(b);
return a-b; })
console.log(res);
控制台显示内容:
红色字体是我标记的,以便理解。
咱们看一下,一开始数组是[2,4,1,3],从小到大排序是从左边开始两两比较,首先2和4比较,2<4,俩数字位置不变;继续向右走,4和1比较,4>1,将4放在原来1的位置上;那么一开始比4小的2与1的大小关系呢,这会儿再进行比较,2>1,那就1在前,2在后;以此类推。
如果是sort()函数从大到小排序,则是从左向右两两进行比较,大的放在左边。下面来看一下代码和控制台显示:
var numberArray = [2,4,1,3]; res=numberArray.sort(function(a,b){
console.log(numberArray);
console.log(a);
console.log(b);
return b-a; //从大到小 })
console.log(res);
sort()函数除了可以给数字排序外,还可用于字母、字符串排序,其实质是按照字符编码的顺序进行排序。用法可参见http://www.jb51.net/article/67458.htm。
以上就是sort()函数的具体比较方法,如有表述不正确之处,望大家赐教,谢谢!
sort()函数到底是怎样进行数字排序的的更多相关文章
- PHP sort() 函数
实例 对数组 $cars 中的元素按字母进行升序排序: <?php $cars=array("Volvo","BMW","Toyota" ...
- C++中sort函数小结
我们都知道,sort函数是C++标准库<algorithm>中的一个库函数.它的功能是对数组/容器中的元素进行排序.用法示例如下: 一.对数组进行排序 示例: int a[] = {1,3 ...
- python 给三个数字排序,不用sort函数
# 给三个数字排序# 方法一def sort_d(a,b,c): if a>b: a,b=b,a # print (a,b) if b>c: b,c=c,b if a>b: a,b= ...
- STL函数库的应用第二弹——快排sort函数与结构体关键字排序
时隔20多天,本蒟蒻终于记起了他的博客园密码!!! 废话不多说,今天主题:STL快排函数sort()与结构体关键字排序 Part 1:引入和导语 首先,我们需要知道,algorithm库里有一些奇怪的 ...
- FCL源码中数组类型的学习及排序函数Sort函数的分析
Array 是所有数组的基类ArrayList 解决了所有Array 类的缺点 能动态扩容, 但是类型不安全的,而是会有装箱与拆箱的性能开销List<T> 则是解决了ArrayLis ...
- 使用sort函数进行排序
介绍 C++的一个重要组成部分STL(Standard Template Library),即标准模板库,是一些高级数据结构和算法的集合:高级数据结构(容器)主要包括list.set.vector.m ...
- python下使用sort()函数对目录下文件名进行多条件排序
目录 1.基础函数 2.例子解析 参考 1.基础函数 a.sort()函数 sort()函数的作用是对列表内容进行正向排序,直接在原列表进行修改,返回的是修改后的列表. lists =[1, 5, 1 ...
- 使用STL库sort函数对vector进行排序
使用STL库sort函数对vector进行排序,vector的内容为对象的指针,而不是对象. 代码如下 #include <stdio.h> #include <vector> ...
- C++对一组pair数据进行排序(sort函数的使用)
最近在写一个算法的时候,把一些数据存在了pair中,并且需要根据pair中first或者second的值对这些数据进行排序.比如:输入数据(1,2).(4,2).(3,3).(2,1)根据first的 ...
随机推荐
- 好用的 HTTP模块SuperAgent
SuperAgent 最近在写爬虫,看了下node里面有啥关于ajax的模块,发现superagent这个模块灰常的好用.好东西要和大家分享,话不多说,开始吧- 什么是SuperAgent super ...
- window环境下使用PHP OpenSSL扩展函数返回false的原因
window环境下使用PHP OpenSSL扩展函数返回false的原因(openssl_pkey_new) 使用的开发环境是PHPstudy ,在使用OpenSSL的函数openssl_pkey_n ...
- Jenkins内存溢出的处理方法
参考:http://openwares.net/java/jenkens_deploy_to_tomcat_error_of_outofmemoryerror.html上的说明,有如下解释: -Xms ...
- mysql二进制安装,升级,多实例部署
目标 理解线上部署考虑的因素 学会编译安装以及二进制安装mysql 学会升级mysql 学会多实例部署mysql数据库 学会合理部署mysql线上库 考虑因素: 版本选择,5.1,5.5还是5.6 ...
- 双网卡环境导致Oracle连接异常
现在就是流行向最高水平看齐,这次项目的部署,好好的SQL Server扔了(有正版授权的企业版,神啊...),逢人就夸:“俺们那上的可是最顶级的Oracle Database System!”.看了看 ...
- Mysql的时间戳转date类型
mysql 的 时间戳转date类型 select FROM_UNIXTIME(1491031706235/1000,'%Y-%m-%d') from dual;
- HDU 1006 Tick and Tick 解不等式解法
一開始思考的时候认为好难的题目,由于感觉非常多情况.不知道从何入手. 想通了就不难了. 能够转化为一个利用速度建立不等式.然后解不等式的问题. 建立速度,路程,时间的模型例如以下: /******** ...
- MongoDB入门学习(二):MongoDB的基本概念和数据类型
上一篇讲了MongoDB的安装和管理,当中涉及到了一些概念,数据结构另一些API的调用,不知道的没关系,事实上非常easy,这篇会简介一下. 1.文档 文档是MongoDB的核心概念.多个键值对有序的 ...
- 转:3.3V和5V电平双向转换——NMOS管
分简单,仅由3个电阻加一个MOS管构成,电路图如下: 此电路来自于飞利浦的一篇设计指导文档,是I2C总线官方推荐使用的电平转换电路.在实际使用过程中,需要尤其注意NMOS管的选型以及上拉电阻阻值的选取 ...
- iBatis2 SqlMap中经常使用sql语句
本来我也不喜欢iBatis,那是由于我当时还不怎么会用它,如今我想说,iBatis是个好东西,不信你试试看.以下是我在项目实践中对iBatis的一个小总结.希望帮助众多在疲于iBatis编码而无暇思考 ...