一:概述

  快速排序是东尼.霍尔所发展的一种快速排序算法。

  对于n个项目的排序,平均O(n*logn)次比较,在比较糟糕的情况下是O(n2)次比较。

  采用分治策略把一个串行分为两个子串行。

二:步骤

  1. 从数列中挑出一个元素,称为 “基准”(pivot)。

  2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。

  3. 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

三:c语言程序

  

四:最坏下的时间复杂度

  假设当划分区间的时候,一个区间n-1个元素,一个区间有0个元素。

  并且继续假设每次递归都出现这种情况。

  划分的代价是O(n)。

  对0个元素的递归,T(0)=O(1)。

  所以估计算法的运行时间的递归:T(n)=T(n-1)+T(0)+O(n)=T(n-1)+O(n)

  可以证明T(n)=O(n2

五:最快情况下的时间复杂度

  划分的每个区间不能大于n/2。

  一个区间为n/2,另一个为n/2-1.

  这种情况下快速算法就快速的多。

  T(n)<=2T(n/2)+O(n)

  可以证明T(n)=O(nlgn)。

转载于:https://www.cnblogs.com/juncaoit/p/5935978.html

000 快速排序算法相关推荐

  1. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  2. 快速排序算法实现思想个人理解

    一.概述 快速排序是冒泡排序的改进算法.它也是通过不断比较和移动交换来实现排序的,只不过它的实现增大了记录的比较和移动的距离,将关键字较大的元素从前面直接放到后面,关键字较小的元素直接从后面放到前面, ...

  3. 快速排序算法(基于Java实现)

    title: 快速排序算法(基于Java实现) tags: 快速排序算法 快速排序算法的原理与代码实现: 一.快速排序算法的原理 快排算法的思想是: 如果需要排序数组中下标从p到r之间的一组数据,我们 ...

  4. java sort算法名称_快速排序算法(Quick Sort)(java)

    /** * 快速排序算法是基于分治策略的一种排序算法,下面是一个递归的快速排序. * @author liuy */ public class QuickSort { public static vo ...

  5. 【算法】快速排序算法的编码和优化

    参考资料 <算法(第4版)>          - - Robert Sedgewick, Kevin Wayne <啊哈! 算法>              - - 啊哈磊 ...

  6. Quick Sort 快速排序算法

    Table of Contents 前言 算法步骤 选取枢纽元 分割数组 算法实现 小数组和插入排序 结语 前言 快速排序算法应该是常见的排序算法中使用的最多的一个,很多语言内置的排序算法都间接或直接 ...

  7. 排序算法系列:快速排序算法

    概述 在前面说到了两个关于交换排序的算法:冒泡排序与奇偶排序. 本文就来说说交换排序的最后一拍:快速排序算法.之所以说它是快速的原因,不是因为它比其他的排序算法都要快.而是从实践中证明了快速排序在平均 ...

  8. 快速排序算法C#实现

    快速排序算法C#实现 最近想把几大经典的排序算法系统的整理过一遍,写下笔记,算是复习吧!! 1.快速排序. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序 ...

  9. 快速排序算法_基于位运算的快速排序算法

    前言 如果你准备看这篇文章,我就当你是懂快速排序算法原理的. 下面是我在2018年10月3日想到的基于二进制位运算对正整数进行的一种快速排序算法,目前的代码只能对正整数进行有效的排序,当然,稍微修改一 ...

最新文章

  1. AWS — AWS EKS
  2. hadoop 单机单间_零基础入门hadoop大数据四——Hadoop框架前奏,JDK环境配置
  3. java setsolinger_java socket 的参数选项解读(转)
  4. win7记事本txt图标显示异常解决方法
  5. 这场直播,我们把 Apache 顶级项目盛会搬来了!
  6. 【车间调度】基于matlab改进的鲸鱼算法求解双目标柔性车间调度问题【含Matlab源码 026期】
  7. ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER
  8. java excel替换字符串_java操作excel 替换指定字符串
  9. Centos7最小化安装升级至图形化
  10. 2021年河南高考--各高校在河南录取分数线预测(本科二批——文科)
  11. 【区块链与密码学】第9-7讲:群签名在区块链中的应用 I
  12. BlackBerry 代码签名工具申请及安装介绍
  13. 远程桌面连接不上,三种方法教你重启服务器
  14. c语言 杨辉三角形 直角形式和等腰三角形形式
  15. 汇道科技it培训让学员都能月入过万
  16. 数据结构与算法(python):树结构
  17. NC UAP STUDIO授权
  18. linux cpu检测工具,CoreFreq:一款强大的监控 CPU 的专业工具
  19. Python每日练习 04 你有一个目录,装有很多图片,现在你要把它们的尺寸变成不都大于Iphone5分辨率的大小
  20. Pandas-高级处理(七):透视表(pivot_table)【以指定列作为行索引对另一指定列的值进行分组聚合操作】、交叉表(crosstab)【统计频率】

热门文章

  1. Java学习笔记之:Java String类
  2. gcc代码反汇编查看内存分布[2]: arm-linux-gcc
  3. [工具库]JFileDownloader工具类——多线程下载网络文件,并保存在本地
  4. oracle中sql语句的优化(转帖)
  5. Python的win32serviceutil之疑似BUG
  6. 利用ASP.NET向服务器上传文件[转]
  7. Ubuntu 12.04下安装Oracle Express 11gR2
  8. SAS宏技术中,%let和call symput有什么区别?
  9. python切割图像,使用Python图像库将一个图像切割成多个图像
  10. wordpress房产信息网_Realia v3.1.2 wordpress房地产模板 租房网站模板