很多人会用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()函数到底是怎样进行数字排序的的更多相关文章

  1. PHP sort() 函数

    实例 对数组 $cars 中的元素按字母进行升序排序: <?php $cars=array("Volvo","BMW","Toyota" ...

  2. C++中sort函数小结

    我们都知道,sort函数是C++标准库<algorithm>中的一个库函数.它的功能是对数组/容器中的元素进行排序.用法示例如下: 一.对数组进行排序 示例: int a[] = {1,3 ...

  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= ...

  4. STL函数库的应用第二弹——快排sort函数与结构体关键字排序

    时隔20多天,本蒟蒻终于记起了他的博客园密码!!! 废话不多说,今天主题:STL快排函数sort()与结构体关键字排序 Part 1:引入和导语 首先,我们需要知道,algorithm库里有一些奇怪的 ...

  5. FCL源码中数组类型的学习及排序函数Sort函数的分析

    Array 是所有数组的基类ArrayList 解决了所有Array 类的缺点    能动态扩容, 但是类型不安全的,而是会有装箱与拆箱的性能开销List<T> 则是解决了ArrayLis ...

  6. 使用sort函数进行排序

    介绍 C++的一个重要组成部分STL(Standard Template Library),即标准模板库,是一些高级数据结构和算法的集合:高级数据结构(容器)主要包括list.set.vector.m ...

  7. python下使用sort()函数对目录下文件名进行多条件排序

    目录 1.基础函数 2.例子解析 参考 1.基础函数 a.sort()函数 sort()函数的作用是对列表内容进行正向排序,直接在原列表进行修改,返回的是修改后的列表. lists =[1, 5, 1 ...

  8. 使用STL库sort函数对vector进行排序

    使用STL库sort函数对vector进行排序,vector的内容为对象的指针,而不是对象. 代码如下 #include <stdio.h> #include <vector> ...

  9. C++对一组pair数据进行排序(sort函数的使用)

    最近在写一个算法的时候,把一些数据存在了pair中,并且需要根据pair中first或者second的值对这些数据进行排序.比如:输入数据(1,2).(4,2).(3,3).(2,1)根据first的 ...

随机推荐

  1. 记录下我的阿里云centos服务器之路

    以下内容都已经过试验,边走边记,懒得排版 安装aphach yum install -y httpd systemctl start httpd netstat -tulp    安装桌面 尽量不用桌 ...

  2. java加载类的方法1.classloader 2.class.forName()

    java加载类的方法1.classloader 2.class.forName() 加载一个类后,是在方法去创建这个类的元信息class对象,在方法区立刻创建.在方法区创建.

  3. GEOS 使用的例子

    typedef Coordinate PT;geos::geom::Geometry* CGlbGlobePolygonSymbol::Interection(CGlbPolygon *geom, C ...

  4. 发送Post的请求代码

    通过浏览器访问的URL请求,都是GET请求,接下来代码是模拟POST发送请求 import java.io.BufferedReader; import java.io.FileNotFoundExc ...

  5. 服务器启动之后运行脚本在/etc/rc.d/rc.local中配置

    服务器启动之后运行脚本在/etc/rc.d/rc.local中配置 # ! /bin/sh # 启动svn /usr/bin/svnserve -d -r /var/svnroot/

  6. GDI+重绘笔记

    有的控件不能重载 OnPaint,设置 ControlStyles.UserPaint = true即可 //如果为 true,控件将自行绘制,而不是通过操作系统来绘制. //如果为 false,将不 ...

  7. hdu1595 find the longest of the shortest(Dijkstra)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1595 find the longest of the shortest Time Limit: 100 ...

  8. 白盒测试中如何实现真正意义上并发测试(Java)

    在这个话题开始之前,首先我们来弄清楚为什么要做并发测试? 一般并发测试,是指模拟并发访问,测试多用户并发访问同一个应用.模块.数据时是否产生隐藏的并发问题,如内存泄漏.线程锁.资源争用问题. 站在性能 ...

  9. mpvue上手

    对于小程序官方编译器,我也不好说什么,不支持scss,不支持emment,一切来说都是不适应 美团mp:http://mpvue.com/mpvue/ vue官方:https://cn.vuejs.o ...

  10. python 查询,子查询以及1对多查询

    1.添加数据: # 方法1:对象.save() book = Book(**kwargs) book.save() # 方法2:类.create(**kwargs) Book.create(**kwa ...