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

快速排序(javascript版本)

时间:2016-12-10 00:50:57      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:new   color   erro   sort   should   throw   script   while   function   

基本过程

1. 选取数组中的一个元素作为基准(pivot)

2. 按照基准将数组分区,左区全部小于基准,右区全部大于基准,使用方法为原地置换(swap in place)

3. 对左右分区递归使用1和2步,直至左右分区只有一个或零个元素,排序完成

JavaScript实现

function fQuickSort(arr,low,high) {
    if(low >= high){
        throw new Error(‘low should less than high‘);
    }
    var pivotIndex = fSwapInPlace(arr,low,high);
    fQuickSort(arr,low,pivotIndex-1);
    fQuickSort(arr,pivotIndex+1,high);
}

function fSwapInPlace(arr,low,high){
    var pivot = arr[low];
    while (low < high) {
        while(low < high && arr[high] > pivot){
            high--;
        }
        arr[low] = arr[high];
        while(low < high && arr[low] <= pivot){
            low++;
        }
        arr[high] = arr[low];
    }
    arr[low] = pivot;
   //stop at pivot place,low equals pivot index
    return low;
}

 

快速排序(javascript版本)

标签:new   color   erro   sort   should   throw   script   while   function   

原文地址:http://www.cnblogs.com/mengff/p/6152543.html

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