zoukankan      html  css  js  c++  java
  • 快速排序

    基本思路

    选择一个数作为基数,直接选择下标为最最中间的就行

    凡是比这个基数大的,统统放到这个基数的右边来

    比这个基数小的,统统放到这个基数的左边来

    递归即可(注意递归结束的条件)

        private static int [] quickSort(int array[], int left, int right) {
            int l = left;
            int r = right;
            //pivot用来存储中间值,就是基数,比基数大的到基数右边,比基数小的到基数左边
            int middle = (left + right) / 2;
            int pivot = array[middle];
            while (l < r) {
                while (array[l] < pivot) {
                    l++;
                }
                while (array[r] > pivot) {
                    r--;
                }
                if (l >= r) {
                    break;
                }
                int temp = array[l];
                array[l] = array[r];
                array[r] = temp;
                if(array[l] == pivot && l == middle){
                    r--;
                }
                if (array[r] == pivot && r == middle) {
                    l++;
                }
            }
            if (left < r){
                quickSort(array, left, --r);
            }
            if (right > l) {
                quickSort(array, ++l , right);
            }
            return array;
        }
  • 相关阅读:
    Redis Redis-Cell
    Redis Bloom Filter
    Redis HyperLogLog
    TCC、XA 、DTP区别
    MySQL索引最左匹配原则
    什么原因导致统计信息失效--SQL
    光标移动大法---落落大神
    mongo 导入导出
    oracle 10053 事件
    卸载12C
  • 原文地址:https://www.cnblogs.com/zzxisgod/p/13335803.html
Copyright © 2011-2022 走看看