快速排序的递归和非递归的实现
2017-04-07 18:51
369 查看
struct QuickS{ int low; int high; }; int Partition(int *arr,int st,int ed){//快速排序的划分 int pos = arr[st]; while(st < ed){ while(arr[ed] > pos && st < ed) ed --; arr[st] = arr[ed]; while(arr[st] <= pos && st < ed) st ++; arr[ed] = arr[st]; } arr[st] = pos; return st; } void QuickSort(int *arr,int st,int ed){//快速排序的递归算法 if(st < ed){ int pos = Partition(arr,st,ed); QuickSort(arr,st,pos-1); QuickSort(arr,pos+1,ed); } } void QuickSortN(int *arr,int low,int high){//快速排序的非递归算法 stack<QuickS> S; QuickS p,q; p.low = low;p.high = high;S.push(p); while(!S.empty()){ q = S.top(); S.pop(); if(q.low < q.high){ int pos = Partition(arr,q.low,q.high); p.low = q.low;p.high = pos - 1;S.push(p); p.low = pos + 1;p.high = q.high;S.push(p); } } }
相关文章推荐
- Java 实现快速排序 递归和非递归
- 快速排序实现之递归与非递归
- 快速排序实现之递归与非递归
- Java实现快速排序递归和非递归
- 霍尔快速排序 非递归 C++实现
- 快速排序Java源码(递归和非递归)
- 快速排序的两重递归实现
- 快速排序的递归实现。 分治法。
- 全排序的递归与非递归的实现
- 霍尔快速排序 非递归 C++实现
- 快速排序, 传统递归实现, 非递归实现
- 快速排序非递归实现
- 快速排序非递归c#实现
- 快速排序非递归实现
- 快速排序的递归和非递归实现
- 快速排序 递归和非递归
- C/C++面试题(三) 推断二叉树、快速排序递归实现、递归判断数组递增
- 快速排序的非递归实现
- 快速排序的非递归实现
- 快速排序的递归和非递归实现