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的 ...
随机推荐
- Jenkins introduction
http://birdinroom.blog.51cto.com/7740375/1342897 https://www.ibm.com/developerworks/cn/java/j-lo-jen ...
- mac 安装 redis
安装命令 brew install redis 开机启动redis命令 $ ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents 使用 ...
- mac xampp命令行调用mysql
参考 http://www.cnblogs.com/machao/p/6206483.html 直接mysql不行,显示command not found 调用 sudo ln -s /applica ...
- python测试网络可达性的方法
1.ping连通性测试 #!/usr/bin/env python #-*- coding: utf-8 -*- import os,sys,re import subprocess def NetC ...
- 一张图,关于 Bayes error rate,贝叶斯错误率等的分析
造轮子是那帮搞研究的“科学家”干的事情(类似E&E里的explore),“工程师”的职责是利用已有的东西解决问题(类似E&E里的exploit). 其次,即使以工程师的角色解决业务问题 ...
- maven setting.xml 配置(有效)
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...
- 手机APP脚本录制(LoadRunner 12)
最近因项目需要,研究了下手机APP脚本录制方法,有需要的童鞋可参考使用! 方法1: 在手机网络中设置网络代理,使用LR12选择Mobile Application – HTTP/HTML协议中代理录制 ...
- js 扩展replaceAll
//扩展replaceAll; String.prototype.replaceAll = function(s1,s2) { return this.replace(new RegExp(s1,&q ...
- Vue2.0 引用 exif.js 实现调用摄像头进行拍照功能以及图片上传功能
vue组件代码 <template> <div> <div style="padding:20px;"> <div class=" ...
- 从头開始写项目Makefile(五):嵌套运行
[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 在大一些的项目里面,全部源码不会仅仅放在同一个文件夹,一般各个功 ...