今天复习了归并和快排,突然想计算一下他们的速度差别到底有多大~结果还是挺令人意外的,哈哈。
话不多说,看代码。
let arr = [];
for (let i = 0; i < 500000; i++) {
arr.push(Math.round((Math.random() * 1000)));
}
let start = new Date().getTime();
/**
* 快速排序
*/
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
let mid = arr.length >> 1;
let midValue = arr.splice(mid, 1);
let left = [];
let right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < midValue) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat(midValue, quickSort(right));
}
/**
* 归并排序
*/
function mergeSort(arr) {
function part(arr, left, right) {
if (left == right) {
return;
}
let mid = left + ((right - left) &