美文网首页Java
比较函数compare

比较函数compare

作者: 饥人谷_Vomx | 来源:发表于2017-03-25 15:42 被阅读0次

    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分开写成两个表达式,其实这里可以合并成一个表达式吧?
    
    
    
    

    相关文章

      网友评论

        本文标题:比较函数compare

        本文链接:https://www.haomeiwen.com/subject/xyecottx.html