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

算法—快速排序(Quicksort)

时间:2015-11-30 13:13:56      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

快速排序的思想:(分而排之)

  (1)在数据集之中,选出一个用于比较的数("基准" Pivot)。

  (2)将数据集合遍历与“基准数据”作比较,小于的移到"基准数据"的左边;大于"基准"的元素都移到"基准数据"的右边。

  (3)对"基准"左边和右边的两个子集,递归重复第一步和第二步,直到所有子集只剩下一个元素为止。

JavaScript实现
//1、快速排序
var startTime = new Date().getTime();//起始时间
var quickSort = function (arr) {
    //过滤条件
    if (arr.length <= 1) {
        return arr;
    }
    //pivotIndex 中间数,pivot 基准数据(用来比较的一个数据)
    var pivotIndex = Math.floor(arr.length / 2),
        pivot = arr.splice(pivotIndex, 1)[0];
    //定义两个空数组,存储跟基准数据比较之后的数据
    var leftArr = [], rightArr = [];
    //循环比较
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] < pivot) {
            leftArr.push(arr[i])
        } else {
            rightArr.push(arr[i]);
        }
    }
    //递归 重复这个操作,concat 是将基准数据与比较大的数据追加到left数组中
    return quickSort(leftArr).concat([pivot], rightArr);
};
//测试
var startArr = [1, 22, 33, 44, 55, 66, 2];
var endArr = quickSort(startArr);
//输出
var endTime = new Date().getTime();//执行结束时间
console.log(endArr);
console.log(endTime - startTime + "MS");

 

算法—快速排序(Quicksort)

标签:

原文地址:http://www.cnblogs.com/eyren/p/5006843.html

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