基本思想:
用栈来模拟递归的过程
部分代码如下:
void QuickSortOP(DataType* a, int left, int right)
{
assert(a);
Stack s;
StackInit(&s);
StackPush(&s, left);
StackPush(&s, right);
while (StackEmpty(&s) != 0)
{
int end = StackTop(&s);
StackPop(&s);
int begin = StackTop(&s);
StackPop(&s);
int div = PartSort1(a, begin, end);
if (begin < div - 1)
{
StackPush(&s, begin);
StackPush(&s, div - 1);
}
if (div + 1 < end)
{
StackPush(&s, div + 1);
StackPush(&s, end);
}
}
}
void TestQuickSort()
{
DataType a[] = { 2, 5, 6, 9, 8, 3, 1, 0, 7, 4 };
QuickSortOP(a, 0, sizeof(a) / sizeof(DataType)-1);
PrintfBuff(a, sizeof(a) / sizeof(DataType));
}
关于栈的实现:
https://github.com/canglaodexiaohai/data-structure/blob/master/%E6%A0%88
关于PartSort1函数的实现:
https://blog.csdn.net/qq_38181018/article/details/79807511