题解 | #排序# JAVA版本 快排

排序

http://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896

为了实现进阶需求,实现了Java版本快排

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 将给定数组排序
     * @param arr int整型一维数组 待排序的数组
     * @return int整型一维数组
     */
    public int[] MySort (int[] arr) {
        quick(arr, 0, arr.length-1);
        return arr;
    }
    
    private void quick(int[] arr, int left,int right) {
        if (left < right) {
            int baseIndex = getBaseIndex(arr, left, right);
            quick(arr, left, baseIndex - 1);
            quick(arr, baseIndex + 1, right);
        }
    }
    
    private int getBaseIndex(int[] arr, int left,int right) {
        int baseIndex = left;
        while (left < right) {
            if (arr[right] >= arr[baseIndex]) {
                right--;
                continue;
            }
            if (arr[left] <= arr[baseIndex]) {
                left++;
                continue;
            }
            swap(arr, left, right);
        }
        //最终将基准数归位
        swap(arr, left, baseIndex);
        return left;
    }

    private void swap(int[] arr, int left,int right) {
        int temp = arr[left];
        arr[left] = arr[right];
        arr[right] = temp;
    }
}
全部评论

相关推荐

07-16 14:10
门头沟学院 Java
点赞 评论 收藏
分享
tttk_:就是人多。 有的是条件和你差不多然后没在od待过的人。 所以就拿这个筛你了。 就和卡学历一样,人太多了。 从公司角度,这样做节省精力,更方便。 没办法谁叫现在人多呢
第一份工作能做外包吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务