码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序算法的 JavaScript 实现

时间:2017-08-28 00:53:16      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:for   复杂度   i++   快速   var   sort   quick   基于   ret   

快速排序是一种在大多数情况下比冒泡排序效率更高(详情参考有关算法复杂度的文章)的算法。

注意:许多编程语言内置的排序 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


 

快速排序算法的 JavaScript 实现

标签:for   复杂度   i++   快速   var   sort   quick   基于   ret   

原文地址:http://www.cnblogs.com/yungtsan/p/7440801.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!