QuickSort 快速排序

快速排序是一个在经验上认为速度最快的排序法:具体代码结构如下,核心部分在于Partition函数;

import java.util.*;

public class QuickSort {
    public void quicksort(int[] A, int l, int r){
        if(l >= r) return;
        int q = partition(A, l, r);
        quicksort(A, l, q-1);
        quicksort(A, q+1, r);
    }

    public int partition(int[] A, int l, int r){
        int pivot = A[r];
        int i = l - 1;
        for(int j = l; j < r; j++){
            if(A[j] <= pivot){
                i++;
                swap(A, i, j);
            }
        }
        swap(A, i+1, r);
        return i+1;
    }

    public void swap(int[] A, int i, int j){
        int temp = A[i];
        A[i] = A[j];
        A[j] = temp;
    }

    public static void main(String[] args) {
        int[] B = new int[]{0, 5, 6, 8, 2, 4, 8, 9, 14};
        QuickSort obj = new QuickSort();
        obj.quicksort(B, 0, B.length - 1);
        System.out.println(Arrays.toString(B));
    }
}

这里需要注意的是,QuickSort函数的两个Int值都是index并且是包含的,所以外部调用的时候需要有B.length-1的逻辑。Partition内部的逻辑需要稍加理解,都挺简单的。

你可能感兴趣的:(QuickSort 快速排序)