快速排序及acwing快排模板

2021-10-25 11:05:37 字數 907 閱讀 1320

快速排序是由c.a.r hoare在2023年發明的,謹以此篇向hoare大佬致敬!

尋找標記:從一連串無序的元素中找到乙個標記x

交換: 將小於等於x的元素都換到陣列左邊,將大於等於x的數都換到陣列右邊

分治:將此陣列分為兩個部分,使得左半邊的元素都不大於x,右半邊的數字都不小於x

遞迴:對左半邊陣列進行快排,對右半邊陣列進行快排。最後使得每乙個分組中只有乙個或沒有元素。

給定你乙個長度為n的整數數列。

請你使用快速排序對這個數列按照從小到大進行排序。

並將排好序的數列按順序輸出。

輸入格式

輸入共兩行,第一行包含整數 n。

第二行包含 n 個整數(所有整數均在1~10^9範圍內),表示整個數列。

輸出格式

輸出共一行,包含 n 個整數,表示排好序的數列。

資料範圍

1≤n≤100000

輸入樣例:

53 1 2 4 5

輸出樣例:

1 2 3 4 5

#include

using namespace std;

const int n = 100010;

int v[n];

void quick_sort(int v, int left, int right)

int main()

{int n;

scanf("%d", &n);

for(int i = 0; i < n; i++)

scanf("%d",&v[i]);

quick_sort(v, 0, n-1);

for (int i = 0; i < n; i++)

printf("%d ", v[i]);

return 0;

快排 AcWing785 快速排序

給定你乙個長度為n的整數數列。請你使用快速排序對這個數列按照從小到大進行排序。並將排好序的數列按順序輸出。輸入格式 輸入共兩行,第一行包含整數n。第二行包含n個整數 所有整數均在1 109範圍內 表示整個數列。輸出格式 輸出共一行,包含n個整數,表示排好序的數列。資料範圍 1 n 100000輸入樣...

演算法 快速排序 經典快排 隨機快排

經典快排的思路是選取陣列的最後乙個數 x,按照問題一的思路把整個陣列劃分成小於等於 x 大於 x兩個部分,將 x 和 大於 x 部分陣列的第乙個元素交換位置。此時整個陣列劃分成小於等於 x x 大於 x三個部分,也就是這一次排序將 x 值排好位置。再分別對小於等於 x和大於 x中的陣列遞迴劃分,直到...

快速排序和變種快排

快速排序 假設我們現在要對乙個陣列ar進行排序。首先我們需要隨機選擇乙個基準值 一般選陣列的首元素 然後將陣列中的其他值與其進行比較,將小於它的數放在其左側,大於的放在右側 假定按從小到大排序 這就完成了一趟快速排序 原始資料如下 ar 0 ar 1 ar 2 ar 3 ar 4 ar 5 ar 6...