不使用递归实现的快速排序
2014-10-30 00:45
218 查看
#include<iostream> #include<queue> using namespace std; void QSort(int* array, int count) { queue<int> First; queue<int> Last; First.push(0); Last.push(count - 1); while(!First.empty()) { int first = First.front(); int last = Last.front(); First.pop(); Last.pop(); int ctrl = array[first]; int curr = 0; int i = first, j = last; while(i < j) { if(curr == 0) { while(array[j] > ctrl && j != i) j--; array[i] = array[j]; curr = 1; } else { while(array[i] <= ctrl && j != i) i++; array[j] = array[i]; curr = 0; } } array[i] = ctrl; if(first < i - 1) { First.push(first); Last.push(i - 1); } if(last > i + 1) { First.push(i + 1); Last.push(last); } } } int main() { int test[10] = { 4,1,7,9,3,2,6,5,0,8 }; QSort(test, 10); for(int i = 0; i < 10; i++) cout << test[i] << " "; cout << endl; return 0; }
相关文章推荐
- 不用递归,使用栈实现快速排序(非常好理解)
- Java使用分治递归的思想实现快速排序
- 使用"函数递归"实现基于php和MySQL的动态树型菜单
- 使用函数递归实现基于php和MySQL的动态树型菜单
- SQL Server2005使用CTE实现递归
- 在Linux中,使用Glib库函数实现递归获取具有特定扩展名的文件
- 【多位数】【多重括号】【带负数】【字符表达式运算】【使用递归】【不用栈实现】
- 使用"函数递归"实现的树型菜单
- 数据结构的应用——使用栈和递归实现Hanoi问题求解
- 用递归方法实现指定目录的枚举——兼谈File类的使用
- 使用递归的方法去实现一棵树
- 用非递归的方法实现快速排序
- 使用函数递归实现基于php和MySQL的动态树型菜单
- 使用插入排序优化快速排序的算法实现
- 使用C#非递归实现查找树节点
- 使用oracle 9i 里的层级查询(Hierarchical Queries)实现树状表结构的递归数据查询
- 使用freemarker实现递归
- 将十进制数转换为指定进制的数 不使用字符操作和递归实现
- 使用递归实现n重循环
- SQL Server2005使用CTE实现递归