为了账号安全,请及时绑定邮箱和手机立即绑定

升降序函数的原理

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

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

正在回答

8 回答

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

11 回复 有任何疑惑可以回复我~
#1

ggangelo

这是反人类的,按正常来说应该是要返回一个比较的bool值。而不是要两个值去相减再比较是否大于0。。这样排序函数的逻辑看起来很奇怪
2021-03-17 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

 该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 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() 以及把功能实现给我们了  我们只要调用就行了

9 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

同问 有知道原理的吗

0 回复 有任何疑惑可以回复我~

看前边的视频

0 回复 有任何疑惑可以回复我~
#1

qq_慕容925192

前面那一个部分有视频?我也想问这个问题
2018-12-26 回复 有任何疑惑可以回复我~
#2

PaulPierce

老哥 可能有点伸手党的感觉. 不过的确找不到你说的哪个视频. 谢谢你.
2018-12-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

升降序函数的原理

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信