我正在寻找一个大约200-300个对象的数组,对特定的键和给定的顺序(asc/desc)进行排序.结果的顺序必须一致且稳定.
什么是最好的算法,你能提供一个在javascript中实现它的例子吗?
谢谢!
我已经实现了mergesort和quicksort来将它们与原生JavaScript排序进行比较.对于快速排序我尝试使用此算法:在youtube上查看算法.两种算法都使用尽可能少的内存,对于合并排序,为每个递归调用传递辅助数组(以避免开销),对于快速排序,使用起始位置和结束位置的位置.我正在使用各种方法来管理NodeJs应用程序中的大量数据.
下面是mergesort,quicksort和本机JavaScript排序,您可以测试性能
问题是:为什么本机JavaScript执行速度较慢?
就我而言:
Chrome - 合并排序:度量:1997.920ms; 快速排序:措施:1755.740ms; native:measure:4988.105ms
节点:merge sort:measure:2233.413ms; 快速排序:措施:1876.055ms; 原住民:措施:6317.118ms
合并排序
var length = 10000000; // ten millions;
var arr = [];
for (let i = length; i > 0; i--) {
// random array
arr.push(parseInt(Math.random() * 1000000000));
}
var mergeSort = function(array) {
function merge(arr, aux, lo, mid, hi) {
for (var k = lo; k <= hi; k++) {
aux[k] = arr[k];
}
var i = lo;
var j = mid + 1; …Run Code Online (Sandbox Code Playgroud)