图解算法-快速排序

1. 关于快速排序

快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。

2. 快速排序步骤

  1. ​​​从数组中挑出一个元素,作为 "基准"(pivot)元素,可以任意选,可以第一个,也可以是最后一个,也可以中间的任意一个;
  2. 遍历数组元素,比基准值小的放在在基准左边,比基准值大的放在基准的右边(相同的数可以到任一边)。循环完之后得到两个新的数组,基准左边的和基准右边的。当然左边或者右边数组有可能为空.
  3. 将左边和右边数组重复的执行步骤1和2(递归)

特殊情况说明:

当数组元素个数小于2时,无须比较,直接返回即可

3. 图解

1. 假如有一个数组为:12,3,28,32,18,22,9,82,34,53

2. 选定基准值(第一个数):12

3. 循环数组,将比12小的数字放在左边,比12大的放在右边

如图:

4. 将左边的数组3,9和右边的数组28,32,18,22,82,34,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值