Java

比较函数compare

2017-03-25  本文已影响0人  饥人谷_Vomx

javascript中数组的sort()方法原理研究

js中compare 函数,如果

function compare (value 1, value 2) {
   if (value1 < value2) {
         return -1;
     } else if ( value1 > value2) {
        return 1;
      } else { return 0;
      } 
  } //如果前>后,为正数的时候, 才执行调换位置 || 升序排列
       ```
如果想要降序排列,则是前< 后 ,为正数的时候,才执行调换位置

不懂的是,为什么为是+1的时候才执行?是造物主规定的吗?
看下面算法:

排序算法 http://javascript.ruanyifeng.com/library/sorting.html
我的理解是底层算法是从小到大的升序排列,所以compare函数中默认是前<后,所以,在调用 compare 函数时,如果符合默认函数的顺序,即前<后,那么就保持原样(这里用return -1布尔值的假表示不执行swap()函数),如果前>后,那么就执行swap()函数,调换二者位置,(这里用return 1布尔值的真表示执行swap()函数),如果两者的值相等,则不执行。

之前一直纠结的是为什么不用0这个假布尔值表示不执行swap()函数,后来终于明白了,为了进行更清晰的代码表达,才把return 0和return -1分开写成两个表达式,其实这里可以合并成一个表达式吧?



上一篇下一篇

猜你喜欢

热点阅读