一、快速排序模板
二、使用步驟
示例:
void
quick_sort
(int q,
int l,
int r)
quick_sort
(q, l, j)
;quick_sort
(q, j +
1, r)
;}
快排模板(以j為分界)
快排屬於分治演算法,分治演算法都有三步:
分成子問題
遞迴處理子問題
子問題合併
void
quick_sort
(int q,
int l,
int r)
//第二步:遞迴處理子問題
quick_sort
(q, l, j)
,quick_sort
(q, j +
1, r)
;//第三步:子問題合併.快排這一步不需要操作,但歸併排序的核心在這一步驟
}
例題如下(示例):
快速排序
給定你乙個長度為n的整數數列。
請你使用快速排序對這個數列按照從小到大進行排序。
並將排好序的數列按順序輸出。
輸入格式
輸入共兩行,第一行包含整數 n。
第二行包含 n 個整數(所有整數均在1~109範圍內),表示整個數列。
輸出格式
輸出共一行,包含 n 個整數,表示排好序的數列。
資料範圍
1≤n≤100000
輸入樣例:
53 1 2 4 5
輸出樣例:
1 2 3 4 5
#include
#include
using namespace std;
const
int n =
100010
;int a[n]
;void
quick_sort
(int q,
int l,
int r)
quick_sort
(q, l, j)
;quick_sort
(q, j +
1, r);}
intmain()
quick_sort
(a,0
,n-1);
for(
int i =
0; i < n; i++
)return0;
}
排序 快速排序模板
以某個記錄 元素 為界 該記錄稱為支點或樞軸 將待排序列分成兩部分 一部分 所有記錄的關鍵字大於等於支點記錄的關鍵字 另一部分 所有記錄的關鍵字小於支點記錄的關鍵字 演算法描述 1 任取待排序記錄序列中的某個記錄 例如取第乙個記錄 作為基準 樞 按照該記錄的關鍵字大小,將整個記錄序列劃分為左右兩個子...
快速排序 模板
說明 經過本函式處理後,陣列itemarray中元素滿足prulefunc itemarray itemr itemarray iteml 為true,其中itemr iteml template t void quicksort itemarray,int iteml,int itemr,bool...
模板 快速排序
排序演算法可以說是從語言步入演算法的第一道坎了,其中最有代表性的莫過於快排。這裡模擬庫函式自帶sort的呼叫方式,寫起來相當自然清爽。樸素快速排序演算法的複雜度最好為o nlogn 最壞時能達到o n include include include include include include d...