为什么比较函数的定义是那个?
比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。
什么叫做x应该排在y的前面?x小还是y小啊?感觉好像是y比x小,x要在y的前面返回值为-1就可以倒序,这里面的过程又是怎么实现的呢?如果-1变1,1变-1,是不是就是正序排序的比较函数定义啊?
比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。
什么叫做x应该排在y的前面?x小还是y小啊?感觉好像是y比x小,x要在y的前面返回值为-1就可以倒序,这里面的过程又是怎么实现的呢?如果-1变1,1变-1,是不是就是正序排序的比较函数定义啊?
2015-09-17
JS的sort函数,在不同的引擎下,有不同的sort实现机制。
V8 引擎 sort
函数只给出了两种排序 InsertionSort
和 QuickSort
,数量小于10的数组使用 InsertionSort
,比10大的数组则使用 QuickSort
。v8- array.js源码
Mozilla/Firefox : 归并排序(jsarray.c 源码)
Webkit :底层实现用了 C++ 库中的 qsort() 方法(JSArray.cpp 源码)
参考链接1:https://segmentfault.com/q/1010000007133473?_ea=1247880
参考链接2 :https://www.cnblogs.com/huoxiao/p/10239284.html
举报