zoukankan      html  css  js  c++  java
  • 快速排序非递归算法(栈)

     快速排序非递归算法(栈)

    import java.util.Stack;
    
    //快速排序非递归
    public class Test {
    
        //使用栈保留左右两个边界,退出条件是左边界大于等于右边界
        public static int[] quickSortUnRecur(int[] arr) {
            int len = arr.length;
    
            if (len < 2) {
                return arr;
            }
    
            Stack<Integer> stack = new Stack<>();
            stack.push(0);
            stack.push(len - 1);
    
            while (!stack.isEmpty()) {
                int right = stack.pop();
                int left = stack.pop();
    
                if (left >= right) {
                    continue;
                }
    
                int pos = left - 1;
                int pivot = arr[right];
    
                for (int i = left; i <= right; i++) {
                    if (arr[i] <= pivot) {
                        pos++;
                        int tmp = arr[pos];
                        arr[pos] = arr[i];
                        arr[i] = tmp;
                    }
                }
                stack.push(left);
                stack.push(pos - 1);
                stack.push(pos + 1);
                stack.push(right);
            }
            return arr;
        }
    
        public static void main(String[] args) {
    
            int[] arr = quickSortUnRecur(new int[]{4, 2, 5, 6, 2, 7, 1, 9, 0});
            for (int i : arr) {
                System.out.print(i + " ");
            }
        }
    }
  • 相关阅读:
    编写登陆认证程序
    模拟实现一个ATM + 购物商城程序
    三级菜单
    12 场景制造
    11 Unity Editor界面
    3.7练习题
    Coolite 弹窗妙用
    Nginx反向代理 实现Web负载均衡
    MySQL 架构
    Lnmmp
  • 原文地址:https://www.cnblogs.com/zhihaospace/p/12727581.html
Copyright © 2011-2022 走看看