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

关于排序函数的参数

<script type="text/javascript">
  function sortNum(a,b) {
  return a - b;
//升序,如降序,把“a - b”该成“b - a”
}
var myarr = new Array("80","16","50","6","100","1");
  document.write(myarr + "<br>");
  document.write(myarr.sort(sortNum));
</script>

传递的实参是数值型字符串,怎么也可以使用减法?如果是其它类型的数据呢?比如字母型字符串,布尔类型等

正在回答

4 回答

有点不明白调用的原理啊,第三次为什么是16和50 比较了呢?为什么不接着80和6比较呢???这个顺序是怎么来的

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

ESKY3687376

这就是优化过的冒泡 这样更快
2017-07-28 回复 有任何疑惑可以回复我~
#2

qq_X_181 回复 ESKY3687376

能解释下这个优化方法吗,很想了解一下
2017-07-28 回复 有任何疑惑可以回复我~
#3

ESKY3687376

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

qq_X_181 回复 ESKY3687376

好的 谢谢
2017-07-28 回复 有任何疑惑可以回复我~
查看1条回复

在函数里面加了一段   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
应该是一种优化版的冒泡排序法

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

qq_X_181

有点不明白调用的原理啊,第三次为什么是16和50 比较了呢?为什么不接着80和6比较呢???这个顺序是怎么来的
2017-07-25 回复 有任何疑惑可以回复我~
#2

fanaiwen

a-b的判断区间不是-1与+1之间吗?怎么又是>0与<0了呢?
2017-11-28 回复 有任何疑惑可以回复我~
“a - b 改成“b - a”


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

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468042    人
  • 解答问题       21891    个

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

进入课程

关于排序函数的参数

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