博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序
阅读量:4511 次
发布时间:2019-06-08

本文共 1267 字,大约阅读时间需要 4 分钟。

基本过程

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

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

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

JavaScript实现

function fQuickSort(arr,low,high) {    if(low > high){        return;    }    if(low < 0){        throw new Error('low should be great than zero')    }    if(high >= arr.length){        throw new Error('high should be less than array\'s length')    }    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数组方式实现

function quickSort(arr){    if(arr.length <= 1) return arr;    var index = Math.floor(arr.length/2);    var key = arr.splice(index,1)[0];    var left = [],right = [];    arr.forEach(function(v){        v <= key ? left.push(v) : right.push(v);    });    return quickSort(left).concat([key],quickSort(right));}

 

转载于:https://www.cnblogs.com/mengff/p/6152543.html

你可能感兴趣的文章
五笔学习早期笔记
查看>>
LeetCode #24 Swap Nodes in Pairs
查看>>
基于WPF系统框架设计(3)-Fluent Ribbon界面布局
查看>>
Photoshop 使用曲线
查看>>
修改表中字段时发生错误
查看>>
YARN的笔记
查看>>
和我一起学习爬虫之爬虫原理和网站基本知识
查看>>
linux内核学习——内存管理
查看>>
SharpDevelop研究笔记
查看>>
php bom \ufeff
查看>>
UWP 使用Windows.Web.Http命名空间下的HttpClient使用post方法,上传图片服务器
查看>>
Docker系列05—Docker 存储卷详解
查看>>
Python基础之内置函数
查看>>
Merge Two Sorted Lists_LeetCode
查看>>
docker使用1
查看>>
public private protected default
查看>>
Python 爬取网页中JavaScript动态添加的内容(一)
查看>>
熟悉常用的HBase操作
查看>>
c# webform 仿百度自动补全(搭配mysql数据库)
查看>>
Kafka介绍及安装部署
查看>>