T588555 快速排序

题目背景

快速排序(Quicksort)采用“**选基准 → 分区 → 递归**”的分治思想:选取一个**基准(pivot)**,把数组划分为 **左段 $ \le pivot$、右段 $> pivot$** ,再分别对两段进行快速排序(分治),最终得到升序序列。 * **稳定性**:**不稳定**(相等元素的相对次序可能改变)。sort排序主要使用快排,所以并不稳定。排完序后,想要实现根据输入顺序输出,需要再加一个顺序变量。 * **空间复杂度**:$O(\log n)$(递归栈,每次函数返回了一个变量,那么就创造了一个空间,平均是$O(\log n)$ 的空间);最坏时可达 $O(n)$。 * **时间复杂度**: * **平均**:$O(n\log n)$; * **最好**:$O(n\log n)$(分区均衡); * **最坏**:$O(n^2)$(如已近乎有序或基准选择不当)。 * **注意事项**:随机基准/三数取中可降低退化概率;面对大量重复值可用**三路划分**提升性能。 ![](https://i.imgs.ovh/2025/08/23/Gtzv1.gif)

题目描述

给定 $n$ 个整数,请用快速排序按**升序**排序并输出。

输入格式

* 第一行:一个整数 $n$; * 第二行:$n$ 个 32 位有符号整数。

输出格式

输出一行,将这 $n$ 个数按升序排列,数之间以一个空格分隔。

说明/提示

数据范围:$1 \le n \le 10^5$。