zoukankan      html  css  js  c++  java
  • 快速排序中的partition.

    经典快速排序中的partition, 将最后一个元素作为划分点。 维护两个区域。 <= x 的, >x 的区域。 划分过程中还有个待定的区域。

    [L,less] 区域小于x, [less+1,cur) 区域大于x.   [cur,R] 待定区域。

         

        /*
         * 将数组中的数字, 小于等于num 的在左边, 大于num的在右边。
         * num为 数组中的最后一个数。
         */
        public static int partion(int[] arr, int L, int R){
            int less = L -1;
            int cur = L;
            
            while( cur < R ){
                if( arr[cur] <= arr[R] ){
                    swap(arr, ++less, cur++);
                }else{
                    cur++;
                }
            }
            swap(arr, less+1, R);
            return less+1;
        }

    swap 代码

    quickSort代码;

    public static void swap(int[] arr, int L, int R){
            int tmp = arr[L];
            arr[L] = arr[R];
            arr[R] = tmp;
        }
    public static void quickSort(int[] arr, int L, int R) {
            
            if( L < R ){
                int p = partion(arr, L, R);
                quickSort(arr, L, p-1);
                quickSort(arr, p+1, R);
            }
            
        }
  • 相关阅读:
    linux三剑客
    linux用户权限
    linux文件权限
    linux目录配置
    linux命令(持续更新)
    linux外置命令
    linux日常操作指令
    晨雾

    CAPTCHA--验证码
  • 原文地址:https://www.cnblogs.com/lijins/p/10153788.html
Copyright © 2011-2022 走看看