java快速排序(快排)算法Quicksort

来源:互联网 发布:mac wine下载 编辑:程序博客网 时间:2024/04/28 09:02
public class Test {    public static void main(String[] args) {        int[] a = {5, 2, 6, 9, 1, 3, 7,4,0,8};        printIntArray(a);        qsort(a, 0, a.length - 1);        printIntArray(a);    }    public static void qsort(int[] a, int left, int right) {        if (left>right) return ;        int left_pointer = left;        int right_pointer = right;        int key = a[left];        while (left_pointer < right_pointer) {            while (left_pointer < right_pointer && key < a[right_pointer]) {//从右边开始找小于key的值                right_pointer--;            }            a[left_pointer] = a[right_pointer];//如果找到交换,否则就是left_pointer = right_pointer            while (left_pointer < right_pointer && key > a[left_pointer]) {                left_pointer++;            }            a[right_pointer] = a[left_pointer];        }        a[left_pointer] = key;//一趟排序完毕,key放入指针位置,这时left_pointer = righ_pointer,key左边都比它小,右边都比它大,然后各自递归左右两边        qsort(a, left, left_pointer - 1);        qsort(a, left_pointer + 1, right);    }    public static void printIntArray(int[] a) {        for (int i : a) {            System.out.print(i + " ");        }        System.out.println("");    }}
原创粉丝点击