快速排序的非递归实现
来源:互联网 发布:ghost预装软件 编辑:程序博客网 时间:2024/05/20 08:01
#include <iostream>
#include<vector>
using namespace std;
void print_array(int array[], int len)
{
for (int i = 0; i < len; i++)
{
cout << array[i] << " ";
}
cout << endl;
}
int Partition(int array[], int low, int high)
{
int tmp = array[low];
while (low < high)
{
while(low < high && array[high] >= tmp) high--;
array[low] = array[high];
while(low < high && array[low] <= tmp) low++;
array[high] = array[low];
}
array[low] = tmp;
return low;
}
//快速排序 非递归
void Not_Recursion_QSort(int array[], int low, int high)
{
vector<int> v;
if (low < high)
{
v.push_back(low);
v.push_back(high);
}
int mid;
int tmp;
int tmp_low;
int tmp_high;
while (v.size())
{
tmp_high = v.back();
v.pop_back();
tmp_low = v.back();
v.pop_back();
tmp = Partition(array, tmp_low, tmp_high);
if (tmp-1 > tmp_low)
{
v.push_back(tmp_low);
v.push_back(tmp-1);
}
if (tmp + 1 < tmp_high)
{
v.push_back(tmp + 1);
v.push_back(tmp_high);
}
}
}
void main()
{
int array[] = {1, 14, 25, 12};
int len = 4;
Not_Recursion_QSort(array, 0, len);
print_array(array, len);
}
#include<vector>
using namespace std;
void print_array(int array[], int len)
{
for (int i = 0; i < len; i++)
{
cout << array[i] << " ";
}
cout << endl;
}
int Partition(int array[], int low, int high)
{
int tmp = array[low];
while (low < high)
{
while(low < high && array[high] >= tmp) high--;
array[low] = array[high];
while(low < high && array[low] <= tmp) low++;
array[high] = array[low];
}
array[low] = tmp;
return low;
}
//快速排序 非递归
void Not_Recursion_QSort(int array[], int low, int high)
{
vector<int> v;
if (low < high)
{
v.push_back(low);
v.push_back(high);
}
int mid;
int tmp;
int tmp_low;
int tmp_high;
while (v.size())
{
tmp_high = v.back();
v.pop_back();
tmp_low = v.back();
v.pop_back();
tmp = Partition(array, tmp_low, tmp_high);
if (tmp-1 > tmp_low)
{
v.push_back(tmp_low);
v.push_back(tmp-1);
}
if (tmp + 1 < tmp_high)
{
v.push_back(tmp + 1);
v.push_back(tmp_high);
}
}
}
void main()
{
int array[] = {1, 14, 25, 12};
int len = 4;
Not_Recursion_QSort(array, 0, len);
print_array(array, len);
}
- 快速排序的非递归实现
- php的非递归快速排序实现
- 非递归的快速排序实现(转)
- 快速排序的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现代码
- 快速排序的非递归实现
- 快速排序算法的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现
- SQL 2005 的存储过程和触发器调试大法
- LINUX常用的一些shell命令
- 从不同题型分析托福阅读训练技巧
- GetLastError
- C/C++____指针____操作
- 快速排序的非递归实现
- WebService 基于axis1.4(二)
- 黑马程序员——day19(1)IO流
- 编程高手—快体现了真正掌握
- 记录点滴21
- eclipse中的汉字极小的解决方案
- 黑马程序员__IO流笔记一
- 数组数据的移动实现实例化:
- web开发名词解释