快速排序是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...