升降序函数的原理

来源:7-22 数组排序sort()

alonehunter

2018-12-24 15:45

function(a,b){
    return a-b;
}

为什么返回 a-b就是升序, 返回b-a就是降序,原理是什么

写回答 关注

8回答

  • 心动等于恸
    2019-01-01 14:59:04
    已采纳

    相当于数组下标a和数组下标b进行比较,若a-b大于零,即为真(true)即下标互换位置,若小于零即为假(flase),及不变,可以吧a-b和b-a看作为a>b和b>a,真即运行,假即跳过.

    ggange...

    这是反人类的,按正常来说应该是要返回一个比较的bool值。而不是要两个值去相减再比较是否大于0。。这样排序函数的逻辑看起来很奇怪

    2021-03-17 16:42:35

    共 1 条回复 >

  • 精慕门9116487
    2019-08-06 23:36:29

     不用知道会用就行了,细枝末节的东西全学会就是浪费精力,工作后也是靠偷和改。主要是能看懂和会用。

  • 规则君
    2019-04-02 22:37:09

    我觉得指的是ASCII码,a97,b98,a-b是按ASCII码升序

  • qq_必当凌绝顶_0
    2019-04-02 22:30:44

     该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下: 

      若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。
      若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。
      若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后。

    sortNum函数 计算的就是数组里面的元素,如果是return b-a   就是用数组后面的数-减去前面数,获得一个数字

    可以是 -9999 也可以是 9999  随便一个数   但是 retrun 出来的 结果 传入 myarr.sort()这个 方法后他会判断是否大于1   如果大于1 那说明 后面的数大于前面的数字  也就是b大于a 那么就会把b和a 交换  他应该是从最左边开始比较 如果大就交换  把最小的数字放在最后  如此多次重复 把数组的数字 排序好(也就是冒泡排序   当然也可能是其他的交换排序  比如简单交换排序)  总的来说   myarr.sort() 以及把功能实现给我们了  我们只要调用就行了

  • qq_慕盖茨8053647
    2019-03-09 11:03:07

    我觉得a,b传递的应该是数组中前后相邻的两个元素,其排序原理类似于c语言中的冒泡法,a-b升序即一个有n个元素的数组中两个相邻元素元素比较大小大的数排序,从而使最大的那个数排到最后,然后在对数组前n-1各元素做相同处理,以此类推从而达到升序排列,b-a降序道理也是一样

  • 昵称不是我取的
    2019-01-19 17:20:27

    可以看一下sort方法的实现代码

  • weixin_宝慕林1158390
    2018-12-31 16:47:01

    同问 有知道原理的吗

  • 2017210593
    2018-12-24 18:43:27

    看前边的视频

    PaulPi...

    老哥 可能有点伸手党的感觉. 不过的确找不到你说的哪个视频. 谢谢你.

    2018-12-28 15:37:32

    共 2 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题