Article
快速排序详解——算法笔记实现方式
00 分钟
2020-3-16
2023-5-21
type
status
category
date
slug
summary
tags
icon
Last edited time
May 21, 2023 07:57 AM

一、什么是快速排序

快速排序是对冒泡排序对一种改进
  • 动图来自菜鸟教程

二、实现方式

  1. 先从数列中取出一个数作为基准数。
  1. 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
  1. 再对左右区间重复第二步,直到各区间只有一个数。

三、关于快速排序的性能参数

1、空间复杂度

最好: 最坏: 平均:

2、时间复杂度

$O(n^2)$

3、是否稳定

不稳定

4、适用于何类型存储

顺序存储

四、代码实现

1、对于把大的数放到基准数右边,消小的数放到基准数左边

有很多方法
这里使用two pointers
①先将 A[1]存至某个临时变量 temp,并令两个下标 left、right 分别指向序列首尾(如令left=1、right=n)
②只要 right 指向的元素 A[right] 大于 temp,就将 right 不断左移;当某个时候 A[right] ≤temp 时,将元素 A[right]挪到 left 指向的元素 A[left]处。
③只要 left 指向的元素 A[left] 不超过 temp,就将 left 不断右移;当某个时候 A [left]> temp 时,将元素 A[left]挪到 right 指向的元素 A[right]处。
④重复②③,直到 left 与 right 相遇,把 temp(也即原 A [1]) 放到相遇的地方。

代码实现此功能

2、快速排序实现

3、程序实例实现


评论