Adn*_*han 8 javascript sorting function
我已经看到这种排序功能正常工作:
var arr = [1,5,3,7,8,6,4,3,2,3,3,4,5,56,7,8,8];
console.log(arr.sort(
function(a,b) {
return a - b;
}
));
Run Code Online (Sandbox Code Playgroud)
但我真的不明白这个小功能的机制.当它比较a和b时,它真正比较了哪个数组?如果说,它拿起前两个数字1和5,该函数将返回-4.这对排序顺序意味着什么?或者它只是负布尔值?即使它是,那怎么样呢?
基本上,排序的工作原理是一次比较两个元素.比较不仅仅是布尔值 - 您有三个选项:小于,等于和大于.在JavaScript中,这三个值分别由n <0,0和n> 0表示.
换句话说,负数意味着a < b; 0手段a = b和积极手段a > b.
为了回答更广泛的问题:有一些相对快速的算法可以通过比较其元素来对列表进行排序.最受欢迎的是Quicksort ; 然而,Quicksort并不稳定,因此一些引擎(Firefox肯定会)使用不同的算法.一个简单的稳定排序是Mergesort.
排序算法通常是介绍CS类中分析的第一批算法中的一些,因为它们很简单但仍然有趣且非常重要,足以说明如何分析算法.你应该阅读它们,因为它们非常酷.
稍微随意一点:
您还可以想象使用特殊类型(如枚举)来处理此类事情.比较功能可以返回LT,GT或者EQ例如适当地返回.但是,在像JavaScript这样的动态语言中,使用数字要容易得多.在更痴迷于类型的语言中(如Haskell :)),使用特殊的订单类型更有意义.