000 快速排序算法
一:概述
快速排序是东尼.霍尔所发展的一种快速排序算法。
对于n个项目的排序,平均O(n*logn)次比较,在比较糟糕的情况下是O(n2)次比较。
采用分治策略把一个串行分为两个子串行。
二:步骤
从数列中挑出一个元素,称为 “基准”(pivot)。
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
递归地(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 快速排序算法相关推荐
- 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/
大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...
- 快速排序算法实现思想个人理解
一.概述 快速排序是冒泡排序的改进算法.它也是通过不断比较和移动交换来实现排序的,只不过它的实现增大了记录的比较和移动的距离,将关键字较大的元素从前面直接放到后面,关键字较小的元素直接从后面放到前面, ...
- 快速排序算法(基于Java实现)
title: 快速排序算法(基于Java实现) tags: 快速排序算法 快速排序算法的原理与代码实现: 一.快速排序算法的原理 快排算法的思想是: 如果需要排序数组中下标从p到r之间的一组数据,我们 ...
- java sort算法名称_快速排序算法(Quick Sort)(java)
/** * 快速排序算法是基于分治策略的一种排序算法,下面是一个递归的快速排序. * @author liuy */ public class QuickSort { public static vo ...
- 【算法】快速排序算法的编码和优化
参考资料 <算法(第4版)> - - Robert Sedgewick, Kevin Wayne <啊哈! 算法> - - 啊哈磊 ...
- Quick Sort 快速排序算法
Table of Contents 前言 算法步骤 选取枢纽元 分割数组 算法实现 小数组和插入排序 结语 前言 快速排序算法应该是常见的排序算法中使用的最多的一个,很多语言内置的排序算法都间接或直接 ...
- 排序算法系列:快速排序算法
概述 在前面说到了两个关于交换排序的算法:冒泡排序与奇偶排序. 本文就来说说交换排序的最后一拍:快速排序算法.之所以说它是快速的原因,不是因为它比其他的排序算法都要快.而是从实践中证明了快速排序在平均 ...
- 快速排序算法C#实现
快速排序算法C#实现 最近想把几大经典的排序算法系统的整理过一遍,写下笔记,算是复习吧!! 1.快速排序. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序 ...
- 快速排序算法_基于位运算的快速排序算法
前言 如果你准备看这篇文章,我就当你是懂快速排序算法原理的. 下面是我在2018年10月3日想到的基于二进制位运算对正整数进行的一种快速排序算法,目前的代码只能对正整数进行有效的排序,当然,稍微修改一 ...
最新文章
- AWS — AWS EKS
- hadoop 单机单间_零基础入门hadoop大数据四——Hadoop框架前奏,JDK环境配置
- java setsolinger_java socket 的参数选项解读(转)
- win7记事本txt图标显示异常解决方法
- 这场直播,我们把 Apache 顶级项目盛会搬来了!
- 【车间调度】基于matlab改进的鲸鱼算法求解双目标柔性车间调度问题【含Matlab源码 026期】
- ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER
- java excel替换字符串_java操作excel 替换指定字符串
- Centos7最小化安装升级至图形化
- 2021年河南高考--各高校在河南录取分数线预测(本科二批——文科)
- 【区块链与密码学】第9-7讲:群签名在区块链中的应用 I
- BlackBerry 代码签名工具申请及安装介绍
- 远程桌面连接不上,三种方法教你重启服务器
- c语言 杨辉三角形 直角形式和等腰三角形形式
- 汇道科技it培训让学员都能月入过万
- 数据结构与算法(python):树结构
- NC UAP STUDIO授权
- linux cpu检测工具,CoreFreq:一款强大的监控 CPU 的专业工具
- Python每日练习 04 你有一个目录,装有很多图片,现在你要把它们的尺寸变成不都大于Iphone5分辨率的大小
- Pandas-高级处理(七):透视表(pivot_table)【以指定列作为行索引对另一指定列的值进行分组聚合操作】、交叉表(crosstab)【统计频率】
热门文章
- Java学习笔记之:Java String类
- gcc代码反汇编查看内存分布[2]: arm-linux-gcc
- [工具库]JFileDownloader工具类——多线程下载网络文件,并保存在本地
- oracle中sql语句的优化(转帖)
- Python的win32serviceutil之疑似BUG
- 利用ASP.NET向服务器上传文件[转]
- Ubuntu 12.04下安装Oracle Express 11gR2
- SAS宏技术中,%let和call symput有什么区别?
- python切割图像,使用Python图像库将一个图像切割成多个图像
- wordpress房产信息网_Realia v3.1.2 wordpress房地产模板 租房网站模板