From 31f2353c2f004bcbdf83c26377123309e2e33dc8 Mon Sep 17 00:00:00 2001 From: flykhan Date: Fri, 24 Mar 2023 12:25:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BF=AB=E9=80=9F=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 第一讲 基础算法/785.cpp | 49 +++++++++++++++++++++++++++++++++++++++ 第一讲 基础算法/Readme.md | 37 ++++++++++++++++++++++++++++- 2 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 第一讲 基础算法/785.cpp diff --git a/第一讲 基础算法/785.cpp b/第一讲 基础算法/785.cpp new file mode 100644 index 0000000..1d3eb23 --- /dev/null +++ b/第一讲 基础算法/785.cpp @@ -0,0 +1,49 @@ +#include +#include + +using namespace std; + +const int N = 100010; + +int q[N]; + +void quick_sort(int q[], int l, int r) +{ + if (l >= r) + return; + + int i = l - 1, j = r + 1, x = q[l + r >> 1]; + + while (i < j) + { + do + i++; + while (q[i] < x); + do + j--; + while (q[j] > x); + + if (i < j) + swap(q[i], q[j]); + else + break; + } + + quick_sort(q, l, j), quick_sort(q, j + 1, r); +} + +int main() +{ + int n; + scanf("%d", &n); + + for (int i = 0; i < n; i++) + scanf("%d", &q[i]); + + quick_sort(q, 0, n - 1); + + for (int i = 0; i < n; i++) + printf("%d ", q[i]); + + return 0; +} \ No newline at end of file diff --git a/第一讲 基础算法/Readme.md b/第一讲 基础算法/Readme.md index 8c49859..77b3a51 100644 --- a/第一讲 基础算法/Readme.md +++ b/第一讲 基础算法/Readme.md @@ -1 +1,36 @@ -包括排序、二分、高精度、前缀和与差分、双指针算法、位运算、离散化、区间合并等内容。 \ No newline at end of file +> # 包括排序、二分、高精度、前缀和与差分、双指针算法、位运算、离散化、区间合并等内容。 + +## 785. 快速排序 + +给定你一个长度为 *n* 的整数数列。 + +请你使用快速排序对这个数列按照从小到大进行排序。 + +并将排好序的数列按顺序输出。 + +##### 输入格式 + +输入共两行,第一行包含整数 *n*。 + +第二行包含 *n* 个整数(所有整数均在 1∼10^9 范围内),表示整个数列。 + +##### 输出格式 + +输出共一行,包含 *n* 个整数,表示排好序的数列。 + +##### 数据范围 + +1≤*n*≤100000 + +##### 输入样例: + +``` +5 +3 1 2 4 5 +``` + +##### 输出样例: + +``` +1 2 3 4 5 +``` \ No newline at end of file