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的 ...
随机推荐
- codevs——2894 Txx考试(背包)
时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Txx是一个成绩很差的人,考试便成了他的噩梦.于是他常在考试时睡觉以 ...
- Ruby on rails初体验(二)
体验一中添加了一个最基本的支架和一个简单的数据迁移,实现了一个基本的增删改查的功能列表.体验二中要在次功能上继续丰满一下功能.实现如下效果: 在每个公司中都包含有不同的部门,按照体验一中的方法,添加一 ...
- 记录一次(xheditor-1.1.6-zh-cn.min.js)的错误:Cannot read property 'match' of undefined的问题解决
由于使用了xheditor富文本框,且这个版本是2011年开发的系统,当时只有IE8,所以一切正常. 但是问题来了,今天使用IE11测试和谷歌浏览器测试,发现一直报这个错误: 且google了一下,没 ...
- 解决php中redis client进行subscribe操作出现timeout的问题
出现该问题的原因是poll设置接收超时所致,这个超时默认设置60s 设置Redis::OPT_READ_TIMEOUT配置项: 解决方法如下: <?php $redis = new Redis( ...
- SQL Server数据库连接,Web.config的正确配置 [转]
http://database.51cto.com/art/201007/213289.htm 此文章主要介绍的是Web.config正确配置SQL Server数据库连接的实际擦步骤,在图5-6中, ...
- centos7 安装rocketmq(quick start)
Quick Start This quick start guide is a detailed instruction of setting up RocketMQ messaging system ...
- 转:SATA协议简介
SATA协议简介 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/FA99999/article/details/70738724 1.概述 本文档主 ...
- ubuntu 下开源安装
常用开源库安装: 0.安装g++: sudo apt-get install g++ 1.首先不可或缺的就是编译器与基本的函式库: sudo apt-get install build-essenti ...
- 基于faro SDK 读取fls原始文件
#define _SCL_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #include <iostream> //#include ...
- Laravel 5.4---后端数据分页和前端显示分页结果
后端数据(Eloquent 模型)分页 事先建立好Eloquent 模型和Controller 还有 前台的View.可以参考我之前的文章:Laravel建站03--建立前台文章列表和文章详情 在co ...