快速排序 Acwing785 快速排序

2022-10-10 21:27:17 字數 649 閱讀 7244

快排最壞情況為:o(n2),本題若遇到最壞情況會超時,故我們需要優化快排,每次取中間的數,而不是取邊界的數

最壞情況分析————序列已經有序:

每次取左區間的數進行快排,每次呼叫函式遍歷r-l次,呼叫函式次數為n次,時間複雜度o(n2)

每次取中間的數進行快排,每次呼叫函式遍歷r-l次,呼叫函式次數為logn次,時間複雜度o(nlogn)

#include #include using namespace std;

const int n = 100010;

int a[n];

void q_sort(int l, int r)

q_sort(l,j);

q_sort(j+1,r);

}int main()

普通的快排是找出每次所選數在序列的位置,再左右分治。

該快排:

隨著規模的逐漸減少,將會得到乙個排序完全的序列。

比如說規模減少到4個數

Acwing 785 快速排序

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

AcWing 785 快速排序(C 演算法)

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

快排 AcWing785 快速排序

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