在堆上模拟栈实现快速排序
1.快速排序的本质
快速排序是一种常用的排序算法,它通过选择一个基准元素,将数组分割成小于基准的部分和大于基准的部分,然后递归地对这两部分进行排序。因此快速排序的递归函数实现,就是将一个无序数组划分为小于基准的部分,基准元素,大于基准的部分,然后递归的对小于基准的部分和大于基准的部分进行重复调用递归函数。因此我们可以在堆上定义一个栈,入栈待排序的元素序列,当栈为空时表示已排序完成。
2.实现方法
快速排序函数实现包括两部分:
1)在堆上定义的栈
2)一个函数过程,输入:待排序的起始位置和终止位置
输出:将输入的序列划分为三部分,小于基准的部分,基准元素,大于基准的部分。得到的小于基准的部分和大于基准的部分要压入栈中。
函数重复的从堆中弹出和压入元素,无须递归的进行函数调用,直到栈为空的时候,表示排序完成。