2021 03 03部落格2 快速排序

2021-10-20 22:43:25 字數 847 閱讀 5212

快速排序是acwing中y老師講的一種在資料較大的情況下,程式執行速度比sort還快的一種寫法(模板一定要牢記

快速排序的基本思想是:

先從數列中取出乙個數作為基準數(一般取中間數,免除邊界問題,或測試資料加強)

取兩個指標從陣列兩個方向運動(i與j),與基準數進行比較,如若比較成功(即下方**),則i與j互換,最後將其分成兩個區域

再對左右區間重複第二步,直到各區間只有乙個數(即遞迴)

具體題目:

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

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

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

輸入格式

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

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

輸出格式

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

資料範圍

1≤n≤100000

上**`

#include

#include

using

namespace std;

const

int n =

1e6+10;

int n;

int q[n]

;void

quick_sort

(int q,

int l ,

int r)

}quick_sort

(q,l,j)

;quick_sort

(q,j+

1,r);}

intmain()

快速排序2

include include using namespace std int partition int a,int p,int r if ix j後退將不符合的數與主元調換,進而放到合適的位置 while a j x i if i 相等時返回分割線的位置 return i void quicks...

快速排序2

public static void quicksort2 int a,int left,int right pivot a left pivot中存的就是基準數 i left j right while i j 再找做左邊的 while a i pivot i 交換兩個數在陣列中的位置 if i ...

快速排序2

include include usingnamespacestd intpartition inta,intp,intr if ix j後退將不符合的數與主元調換,進而放到合適的位置 while a j x i if i 相等時返回分割線的位置 returni voidquicksort inta...