快速排序算法的简短描述
一个数组,比如:
[3,9,2,1,5,4]
取出某个元素(比如第一个元素3);
将除3之外的元素元素分为两组,小于(less than)等于(equal)3的为一组,[1,2],记为lt,大于(greater than)3的为一组[4,5,9] ,记为gt;
对lt 和 gt 重复上面的步骤——快速排序是一个递归过程(recursive);
将最终的结果合并。
用js来描述就是:
// list that greater than nfunction listgt(list,n){return list.filter(function(m){return m > n;})}// eg.// 返回大于2的元素// -> [ 3, 9, 5, 4 ]// console.log(listgt([3,9,2,1,5,4],2));// list that less than or equal to nfunction listlet(list,n){return list.filter(function(m){return m <= n;})}// eg.// 返回比小于或等于2的元素// -> [ 2, 1 ]// console.log(listlet([3,9,2,1,5,4],2));function first(list){return list[0];}function rest(list){return list.slice(1);}function quicksort(list){if(list.length === 0){return [];}else{var n = first(list), lt = listlet(rest(list),n), gt = listgt(rest(list),n)// 递归 & 合并return [].concat(quicksort(lt),n,quicksort(gt))}}console.log(quicksort([3,9,2,1,5,4]));// [ 1, 2, 3, 4, 5, 9 ]
转载于:https://www.cnblogs.com/wewe/p/3163974.html
快速排序算法的简短描述相关推荐
- 【算法】快速排序算法的编码和优化
参考资料 <算法(第4版)> - - Robert Sedgewick, Kevin Wayne <啊哈! 算法> - - 啊哈磊 ...
- 使用php描述快速排序算法,PHP描述冒泡排序和快速排序算法
使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组. 写一个二维数组排序算法函数,能够具有 ...
- Quick Sort 快速排序算法
Table of Contents 前言 算法步骤 选取枢纽元 分割数组 算法实现 小数组和插入排序 结语 前言 快速排序算法应该是常见的排序算法中使用的最多的一个,很多语言内置的排序算法都间接或直接 ...
- 【图文解释】快速排序算法
高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 7 9 3 ...
- JDK的快速排序算法实现DualPivotQuicksort
从JDK7开始采用这种双Pivot的快速排序算法,这种算法通常会比传统单Pivot的快排算法效率更高.本文采用JDK8的源码进行分析. 具体流程如下: 1.需要排序的数组为a,判断数组的长度是否大于2 ...
- 交换排序-经典的快速排序算法总结
时间复杂度,平均O(nlogn),最坏O(n): 不稳定的算法 1.算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide ...
- 十二之续、快速排序算法的深入分析
十二之续.快速排序算法的深入分析 作者:July 二零一一年二月二十七日 -------------------------- 前言 一.快速排序最初的版本 二.Hoare版本的具体分析 三.Ho ...
- 快速排序: 使用快速排序算法对数组进行排序
快速排序: 使用快速排序算法对数组进行排序 题目 一个数组有 N 个元素,使用快速排序对其进行排序输出(本题还会人工阅卷,请使用快速排序算法进行排序) 输入描述: 输入为两行. 第一行一个整数n(1 ...
- 快速排序算法详解(原理,时间复杂度,实现代码)
快速排序算法详解(原理.实现和时间复杂度) 快速排序是对冒泡排序的一种改进,由 C.A.R.Hoare(Charles Antony Richard Hoare,东尼·霍尔)在 1962 年提出. 快 ...
最新文章
- 致力云安全服务模式 安全狗获近5000万融资
- OS / Linux / 系统阻塞在系统调用中时如果收到信号,系统如何处理?
- C++双目/单目运算符的重载
- 围观一下tp的游戏保护 一
- 显示学生各科成绩和总成绩-面试被问到
- 关于static方法
- go sublime mysql_Sublime text 3开发GO
- centos7下安装mysql5.6_CentOS7安装后MySQL5.6如何配置MySQL5.6呢?
- 上计算机课玩游戏检讨400字,上网课玩游戏检讨书
- 《大型网站技术架构》读书笔记[3] - 架构核心五要素
- mysql控制结构_Mysql 控制结构初识
- 关于Unity中DOTween插件的使用(专题一)
- dubbo如何利用spring扩展点完成初始化
- 苹果UDID泄露续:为什么UDID泄露会引起这么大反响?
- 证券交易系统 -- 为什么要低延迟?
- Baklib每日分享|在线产品手册的制作技巧
- Educational Codeforces Round 97 (Rated for Div. 2)
- 丧心病狂!华为折叠屏手机一秒售罄,炒到9万一部!
- 手机投屏到电脑的实用工具
- 【Android进阶】20、音频播放:SoundPool 类、单元测试:Espresso框架