第三章 :查詢與排序-------3.4快排之雙向掃描分割槽法
快排之雙向掃描分割槽法
#include<iostream>
using namespace std;
int partition(int A[],int p,int r){
int pivot=A[p];
int left=p+1;
int right=r;
while(left<=right){
//left不停往右走,直到遇到大於主元的元素
while(A[left]<=pivot) left++; //迴圈退出時,left一定是指向第一個大於主元的位置
while(A[right]>pivot) right--; //迴圈退出時,right一定是指向最後一個小於等於主元的位置
if(left<right){
swap(A[right],A[left]);
}
}
//while退出時,兩者交錯,且right指向的是最後一個小於等於主元的位置,也就是主元應該待的位置
swap(A[p],A[right]);
return right;
}
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.5快排之三指標分割槽法排序指標
- 【Algorithm】快排分割槽方法Go
- SCI分割槽查詢
- 如何查詢分割槽表的分割槽及子分割槽
- 分割槽表分割槽索引查詢效率探究索引
- ORACLE全表掃描查詢Oracle
- 第三章:查詢與排序(下)----------- 3.20桶排序排序
- 第三章:查詢與排序(下)----------- 3.21基數排序排序
- 查詢全表掃描語句
- 走索引掃描的慢查詢索引
- 查詢全表掃描的sqlSQL
- 第三章:查詢與排序(下)----------- 3.19 計數排序排序
- 第三章 :查詢與排序-------3.6快排在工程實踐中的優化排序優化
- 關於分割槽表中的全partition掃描問題
- Spark 3.0 新特性 之 自適應查詢與分割槽動態裁剪Spark
- oracle實驗記錄(分割槽全表掃描(全區掃描) FTS 時候的成本計算)Oracle
- Oracle查詢分割槽表的最後一個分割槽值Oracle
- 巧用分割槽查詢案例一則
- 第三章:查詢與排序(下)----------- 3.28 特殊排序(利用sort函式)排序函式
- oracle實用sql(14)--查詢分割槽表的分割槽列和子分割槽列OracleSQL
- 「排序演算法」圖解雙軸快排排序演算法圖解
- 排序法:選擇、冒泡、插入和快排排序
- oracle實驗記錄 (分割槽表,掃描基數的計算)Oracle
- 查詢與排序02,折半查詢排序
- 演算法-->折半查詢(快排)演算法
- 第三章 :查詢與排序-------3.2你需要掌握的快速排序演算法排序演算法
- 第三章:查詢與排序(下)----------- 3.16堆的概念及堆排序思路排序
- 第三章:查詢與排序(下)----------- 3.14 逆序對個數排序
- Laravel Query Builder 複雜查詢案例:子查詢實現分割槽查詢 partition byLaravelUI
- Greenplum儲存過程使用分割槽表將進行全表掃描儲存過程
- 第三章 :查詢與排序(下)-------3.1分治法介紹及關鍵點解析排序
- 查詢與排序05,氣泡排序排序
- 查詢與排序04,插入排序排序
- 查詢與排序03,選擇排序排序
- 第二章 :查詢與排序---------遞迴、查詢與排序補充排序遞迴
- 第三章 :查詢與排序-------3.7分治模式的完美詮釋_歸併排序排序模式
- 使用索引掃描來進行排序索引排序
- Oracle查詢Interval partition分割槽表內資料Oracle