文章目录
使用非递归来实现快速排序
一、原理
- 使用一个栈,来模拟递归的过程
- 本质:二叉树的非递归先序遍历:
- 创建一个栈
- 根节点入栈
- 取栈顶元素
- 访问元素
- 右子树入栈
- 左子树入栈
-
二、代码实现
代码如下(示例):
1.实现代码
//使用非递归来实现快速排序
public static void quickSorByLoop(int[] arr){
//1.创建一个栈,栈里面存放要去处理的区间
Stack<Integer> stack = new Stack<>();
//2.把第一组要去处理的区间入栈
stack.push(0);
stack.push(arr.length - 1);
//3.循环取栈顶元素的区间,进行 partition 操作
while(!stack