快速排序【遞迴】【非遞迴】
單純記錄一下
Partition函式
int Partition(vector<int>& nums, int start, int end){
if(start==end){
return start;
}
int index = end;
int small = start-1;
for(int i=start;i<end;i++){
if(nums[i]<nums[index]){
small++;
if(i!=small){
swap(nums[i],nums[small]);
}
}
}
swap(nums[small+1],nums[end]);
return small+1;
}
遞迴QuickSort
void QuickSort_Recur(vector<int>& nums, int start, int end){
if(start>=end){
return;
}
int index = Partition(nums,start,end);
QuickSort_Recur(nums,start,index-1);
QuickSort_Recur(nums,index+1,end);
}
非遞迴QuickSort
void QuickSort_Loop(vector<int>& nums){
stack<int> indexs;
int start=0, end=nums.size()-1;
int index = Partition(nums,start,end);
if(start<index-1){
indexs.push(start);
indexs.push(index-1);
}
if(index+1<end){
indexs.push(index+1);
indexs.push(end);
}
while(!indexs.empty()){
int high = indexs.top();
indexs.pop();
int low = indexs.top();
indexs.pop();
int index = Partition(nums,low,high);
if(low<index-1){
indexs.push(low);
indexs.push(index-1);
}
if(index+1<high){
indexs.push(index+1);
indexs.push(high);
}
}
}
相關文章
- 快速排序(遞迴及非遞迴演算法原始碼)排序遞迴演算法原始碼
- 遞迴-*快速排序遞迴排序
- 氣泡排序、快速排序(遞迴&非遞迴)、堆排序演算法比較淺析排序遞迴演算法
- 快速排序-遞迴方式排序遞迴
- 歸併排序的非遞迴實現排序遞迴
- 每天刷個演算法題20160525:快速排序的遞迴轉非遞迴解法演算法排序遞迴
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 二十一、氣泡排序演算法——JAVA實現(遞迴與非遞迴)排序演算法Java遞迴
- Java不用遞迴的迭代快速排序示例Java遞迴排序
- 資料結構:歸併排序(非遞迴)資料結構排序遞迴
- 【C++】翻轉二叉樹(遞迴、非遞迴)C++二叉樹遞迴
- 遞迴和尾遞迴遞迴
- 揹包問題的遞迴與非遞迴演算法遞迴演算法
- Vue3.0的遞迴監聽和非遞迴監聽Vue遞迴
- python-動態規劃的遞迴、非遞迴實現Python動態規劃遞迴
- 遞迴和非遞迴分別實現求n的階乘遞迴
- 二叉樹的四種遍歷(遞迴與非遞迴)二叉樹遞迴
- 【資料結構】二叉樹遍歷(遞迴+非遞迴)資料結構二叉樹遞迴
- 斐波那契數列的遞迴和非遞迴實現遞迴
- 原:八皇后問題的遞迴和非遞迴Java實現遞迴Java
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴
- Laravel - 選單遞迴及排序Laravel遞迴排序
- 遞迴演算法轉換為非遞迴演算法的技巧遞迴演算法
- Java遍歷資料夾的兩種方法(非遞迴和遞迴)Java遞迴
- 遞迴遞迴
- 遍歷二叉樹的遞迴與非遞迴程式碼實現二叉樹遞迴
- 二分法的簡單實現——-遞迴和非遞迴遞迴
- Android遍歷所有控制元件的遞迴和非遞迴實現Android控制元件遞迴
- 遞迴轉非遞迴 棧模擬 Recursive to Non-recursive stack simulated 總結遞迴
- 【演算法拾遺】二分查詢遞迴非遞迴實現演算法遞迴
- 斐波那契數列(Fibonacci)遞迴和非遞迴實現遞迴
- 二叉樹建立及遍歷演算法(遞迴及非遞迴)二叉樹演算法遞迴
- ACM(遞迴遞推—A)ACM遞迴
- 漢諾塔非遞迴演算法遞迴演算法
- 漢諾塔非遞迴棧程式碼遞迴
- 資料結構與演算法——歸併排序: 陣列&連結串列&遞迴&非遞迴解法全家桶資料結構演算法排序陣列遞迴
- 歸併排序(C++_分治遞迴)排序C++遞迴
- 演算法學習-遞迴排序演算法遞迴排序