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

关于a-b和b-a有关的排序问题

function sortNum(a,b) {

        return b-a;

   }

var myarr = new Array("80","16","50","6","100","1");

document.write(myarr.sort(sortNum));

这里函数sortNum()里面执行的return b-a;意思返回b-a的值。我的理解是调用的时候不应该返回的是差值吗?比如数组var myarr = new Array("80","16","50","6","100","1");调用返回的应该是前后两数的差值啊,怎么就变成了排序而不是差值呢?一直理解不了,求大神们赐教

正在回答

4 回答

在函数里面加了一段   document.write("(a-b)="+(a-b)+"</br>");终于看明白了
(a-b)=64----第一次调用函数:a是80,b是16,结果为64>0,因此交换位置:16,80,50,6,100,1
(a-b)=30----第二次调用函数:a是80,b是50,结果为30>0,因此交换位置:16,50,80,6,100,1
(a-b)=-34----第三次调用函数:a是16,b是50,结果为-34<0,因此不交换位置:16,50,80,6,100,1
(a-b)=74----第四次调用函数:a是80,b是6,结果为74>0,因此交换位置:16,50,6,80,100,1
(a-b)=44----第五次调用函数:a是50,b是6,结果为44>0,因此交换位置:16,6,50,80,100,1
(a-b)=10----第六次调用函数:a是16,b是6,结果为10>0,因此交换位置:6,16,50,80,100,1
(a-b)=-20----第七次调用函数:a是80,b是100,结果为-20<0,因此不交换位置:6,16,50,80,100,1
(a-b)=99----第八次调用函数:a是100,b是1,结果为99>0,因此交换位置:6,16,50,80,1,100
(a-b)=79----第九次调用函数:a是80,b是1,结果为79>0,因此交换位置:6,16,50,1,80,100
(a-b)=49----第十次调用函数:a是50,b是1,结果为49>0,因此交换位置:6,16,1,50,80,100
(a-b)=15----第十一次调用函数:a是16,b是1,结果为15>0,因此交换位置:6,1,16,50,80,100
(a-b)=5----第十二次调用函数:a是6,b是1,结果为5>0,因此交换位置:1,6,16,50,80,100
1,6,16,50,80,100
应该是一种优化版的冒泡排序法

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

慕慕1807936

thanks
2017-08-16 回复 有任何疑惑可以回复我~
#2

慕后端6566198

为什么a,b的值的顺序看起来很乱,并不是相邻之间平移,没看懂,能解释一下吗?谢谢
2017-12-21 回复 有任何疑惑可以回复我~
#3

ESKY3687376 回复 慕后端6566198

对不是相邻的,是一种优化过的冒泡排序。这已经是算法问题了。
2017-12-23 回复 有任何疑惑可以回复我~
#4

ESKY3687376 回复 慕后端6566198

给你个网址http://blog.csdn.net/cbs612537/article/details/8513723 其实这已经是涉及到算法了
2017-12-23 回复 有任何疑惑可以回复我~
查看1条回复

.如果指定<方法函数>,则按<方法函数>所指定的排序方法排序。myArray.sort(sortMethod);

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

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


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

你可以举个例子,比如10和11,return  10-11.结果是-1,说明是升序

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

你定义的函数需要传两个参数,myarr.sort(sortNum)这个着实是看不懂,如果你想求数组俩数的差值就传进去两个参数,例如sortNum(myarr[0],myarr[1]),myarr.sort,是系统自带的排序

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

举报

0/150
提交
取消

关于a-b和b-a有关的排序问题

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