快速排序是一种在大多数情况下比冒泡排序效率更高(详情参考有关算法复杂度的文章)的算法。
注意:许多编程语言内置的排序 API 底层实现便是基于快速排序。
ES5 与 ES6 语法在实现该算法时区别不大,以下仅提供 ES5 版本。
function quickSort(arr) { var len = arr.length; if (len <= 1) { return arr.slice(0); // 注意用 slice 可防范 arr[0] 为 undefined } var left = [], right = [], mid = []; mid.push(arr[0]); for (var i = 1; i < len; i++) { if (arr[i] < mid[0]) { left.push(arr[i]); } else { right.push(arr[i]); } } return quickSort(left).concat(mid.concat(quickSort(right))); // 递归调用并拼接}console.log(quickSort([27,4,67,289,678,2,74,97,86,79,0,290,54,28,75]))// [0, 2, 4, 27, 28, 54, 67, 74, 75, 79, 86, 97, 289, 290, 678]
the end