快速排序非递归版(利用键值对)

 

        // 建立一个函数

        public static void quickSort(int [] array) {

                LinkedList<int[]> list = new LinkedList<int[]>();   // 用来保存待处理的范围

                int start = 0;

                int end = array.length - 1;

               list.add(new int[]{start, end});

              while (list.size() > 0) {

                  int [] range = list.getFirst();

                  int s = range[0];

                  int e = range[1];

                  int temp = array[s];

              while (s < e) {
                while (s < e && temp < array[e]) {
                    e--;
                }
                if (s == e) {
                    break;
                }
                array[s++] = array[e];
                while (s < e && temp > array[s]) {
                    s++;
                }
                if (s == e) {
                    break;
                }
                array[e--] = array[s];
            }
            array[s] = temp;

            if (range[0] < s - 1) {

               list.add(new int[]{start, s - 1});

            }

            if (s + 1 < range[1]) {

              list.add(new int[]{s + 1, end});

           }

          list.removeFirst();

        }

   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值