JS中sort方法有点疑惑

空间还是看 发布于 2013/08/11 13:06
阅读 2K+
收藏 0



<script> 

  function compare(a,b) { 

    return a-b; 

  } 

  var numArr = new Array(12,23,1,4,23,34,2,5); 

  numArr.sort(compare); 

  for (var i = 0; i<numArr.length; i++) { 

    document.write(numArr[i] +"<br>"); 

  } 

</script>

  sort方法中负数和正数还有零对排序起到什么影响?我有点疑惑,如果a-b是负数,那么下一个a-b是numArr[1]-numArr[2]吗?

哪位大神能够帮我解释一下,拜托!

加载中
0
xue777hua
xue777hua
ECMAscript规范中并未规定具体的sort算法,所以导致各个浏览器都有自己的sort算法。。。有时候需要考虑算法的稳定性问题
空间还是看
空间还是看
嗯,多谢!
0
xue777hua
xue777hua

这里的compare只是一个比较方式而已。。

你看啊,你的数组既然要排序,那就要比较大小吧?按照什么排序呢?故而可以自定义compare方法。有个条件:如果定义a 大于 b 则返回正;a 小于 b 返回负; 否则返回0. 

仅此而已。

xue777hua
xue777hua
回复 @我在KY8011上见到你 : 快排
空间还是看
空间还是看
还有一点不明白,sort方法使用的是什么排序?
空间还是看
空间还是看
回复 @xue777hua : 明了!多谢指导。
xue777hua
xue777hua
回复 @我在KY8011上见到你 : 对,如果你要自定义一个sort方法的话,一定要定义compare函数,并且传递给sort,这个compare返回必须是 0和正负数
空间还是看
空间还是看
sort方法执行的时候只按照返回值正负或者零执行吗,有没有sort方法的说明?
0
xue777hua
xue777hua
sort方法并不是Javascript的标准中定制的,每个浏览器都可以自定义不同的排序算法。。。
返回顶部
顶部