美文网首页
快速排序

快速排序

作者: VegetableAD | 来源:发表于2017-03-24 10:51 被阅读3次
    public class Test{
    
        private static int[] arr = {25,1,45,10,5,6,17};
    
        public static void main(String[] args) {
            //notice:the length sub one
            quickSort(arr, 0, arr.length - 1);
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
        }
    
        public static void quickSort(int[] arr, int begin, int end){
            if (begin >= end) {
                return;
            }
            int k = partition(arr, begin, end);
            quickSort(arr, begin, k - 1);
            quickSort(arr, k + 1, end);
        }
    
        public static int partition(int[] arr, int begin, int end){
            // 取最后一个元素用来比较
            int x = arr[end];
            // 指向第一个元素的前一个地址
            int i = begin - 1;
            for (int j = begin; j < end; j++) {
                // 跟最后一个比较,如果小于等于最后一个元素就执行if语句
                if (arr[j] <= x) {
                    i++;
                    int t = arr[i];
                    arr[i] = arr[j];
                    arr[j] = t;
                }
            }
            //更换最后一个和i+1的元素
            int t = arr[end];
            arr[end] = arr[i + 1];
            arr[i + 1] = t;
            return i + 1;
        }
    }
    

    相关文章

      网友评论

          本文标题:快速排序

          本文链接:https://www.haomeiwen.com/subject/xhvxottx.html