第三章 :查詢與排序-------3.2你需要掌握的快速排序演算法
你需要掌握的快速排序演算法:
思路:
QuickSort(A,p,r)
if p<r
q=Partition(A,p,r)
QuickSort(A,p,q-1)
QuickSort(A,q+1,r)
快排的劃分演算法:
思路:
兩個指標:scanner 、bigger。
scanner: <=sp 右移;
>sp 交換,bigger左移。
邊界:如果最後一個掃描元素大於主元,bigger左移之後小於了scanner;
如果最後一個掃描元素小於主元,scanner的右移,導致scanner大於bigger。
末了狀態一定是: bigger<scanner,且二者臨近。
#include<iostream>
using namespace std;
int partition(int A[],int p,int r){
int pivot=A[p];
int sp=p+1; //掃描指標
int bigger=r; //右側指標
while(sp<=bigger){
if(A[sp]<=pivot){ //掃描元素小於主元,左側指標向左移
sp++;
}
else{
swap(A[sp],A[bigger]);
bigger--;
}
}
swap(A[p],A[bigger]);
return bigger; //返回主元在交換完成後的下標
}
void quickSort(int A[],int p, int r){
if(p<r){
int q=partition(A,p,r);
quickSort(A,p,q-1);
quickSort(A,q+1,r);
}
}
int main(){
int arr[]={1,6,2,3,4,8,11,3,9,4,2,5,3};
quickSort(arr,0,12);
for(int i=0;i<13;i++){
cout<<arr[i]<<" ";
}
return 0;
}
結果:
相關文章
- 第三章:查詢與排序(下)----------- 3.20桶排序排序
- 第三章:查詢與排序(下)----------- 3.19 計數排序排序
- 第三章:查詢與排序(下)----------- 3.21基數排序排序
- 第三章:查詢與排序(下)----------- 3.22 總結:10種排序演算法的對比分析排序演算法
- 第三章:查詢與排序(下)----------- 3.16堆的概念及堆排序思路排序
- 第三章:查詢與排序(下)----------- 3.28 特殊排序(利用sort函式)排序函式
- 第三章 :查詢與排序-------3.7分治模式的完美詮釋_歸併排序排序模式
- 第二章 :查詢與排序---------遞迴、查詢與排序補充排序遞迴
- 排序演算法__快速排序排序演算法
- 排序演算法:快速排序排序演算法
- 排序演算法 - 快速排序排序演算法
- 第三章:查詢與排序(下)----------- 3.14 逆序對個數排序
- 分分鐘掌握快速排序排序
- 第三章:查詢與排序(下)----------- 3.23 相關題解:排序陣列中找和的因子排序陣列
- 第二章 :查詢與排序-------希爾排序排序
- 排序演算法之 '快速排序'排序演算法
- 第二章 :查詢與排序-------2.15 分析10種排序演算法的穩定性排序演算法
- 第三章:查詢與排序(下)----------- 3.15基礎學習_樹、二叉樹、堆排序排序二叉樹
- 結構與演算法(04):排序規則與查詢演算法演算法排序
- 帶你掌握4種Python 排序演算法Python排序演算法
- 【JAVA演算法】排序演算法 -- 快速排序Java演算法排序
- 第三章:查詢與排序(下)----------- 3.27 用計數排序解決員工年齡問題排序
- 排序和查詢排序
- 排序演算法之快速排序的實現排序演算法
- 第三章 :查詢與排序-------3.6快排在工程實踐中的優化排序優化
- 演算法之常見排序演算法-氣泡排序、歸併排序、快速排序演算法排序
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- Sorting 排序演算法: Quick Sort 快速排序排序演算法UI
- iOS 演算法之排序、查詢、遞迴iOS演算法排序遞迴
- 快速排序演算法排序演算法
- 【演算法】快速排序演算法排序
- 排序演算法-Java實現快速排序演算法排序演算法Java
- 氣泡排序、歸併排序與快速排序比較排序
- 第三章 :查詢與排序-------3.5快排之三指標分割槽法排序指標
- 第三章:查詢與排序(下)----------- 3.12 實踐_最小可用id是多少排序
- 畫江湖之演算法篇【排序演算法】快速排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 快速排序演算法排序
- 第三章:查詢與排序(下)----------- 3.29 題解:判斷陣列的包含問題排序陣列