zoukankan      html  css  js  c++  java
  • 【算法】快速排序

    注意点

    • 分治思想、递归思想
    • 时间复杂度O(nlogn),适合大规模数据排序
    • 在数组中 找一个分区点,把数据分隔成两区间,一部分小于分区点,一部分大于分区点,然后递归处理分隔后的连个小的区间。
    • 原地排序,不占用太多额外空间
    package algorithm.sort;
    
    import java.util.Arrays;
    
    public class QuickSort {
        public static void main(String[] args) {
            int[] arr = {11,6,8,2,1,4,13};
            sort(arr,0,arr.length-1);
            System.out.println(Arrays.toString(arr));
        }
    
        private static void sort(int[] arr,int head,int tail) {
            if(head > tail) return;
    
            int q = partition(arr,head, tail);
    
            sort(arr,head,q-1);
            sort(arr,q+1,tail);
        }
    
        /**
         * 分区,根据分区点,把数据分成两半
         * @param arr
         * @param head
         * @param tail
         * @return
         */
        private static int partition(int[] arr,int head,int tail){
            int pivot = arr[tail];//分区点
            int i = head;
            for(int j=head;j<=tail-1;j++) {
                if(arr[j] < pivot) {
                    //swap arr[i] with arr[j]
                    int tmp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = tmp;
                    i++;
                }
            }
            //swap arr[i] with arr[tail]
            arr[tail] = arr[i];
            arr[i] = pivot;
            return i;
        }
    
    }
    
  • 相关阅读:
    备忘录模式---行为型
    观察者模式(Observer)---行为型
    Hadoop基础
    centos执行-查看,复制,删除-命令的脚本
    权限问题
    12月centos单词
    配置集群遇到的问题
    SSH--完全分布式主机设置【克隆过安装过Hadoop的主机后】
    java随机排座位
    NewWord
  • 原文地址:https://www.cnblogs.com/zendwang/p/algorithm-quick-sort.html
Copyright © 2011-2022 走看看