快排的原则就是选一个标准,然后每一个数据和这个标准对比,比这个标准大的放在左边,比这个标准小的放在右边。

看代码:

package com.logan.Algo;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int [] array = {9,1,7,3,6,2,10,4};
        int n = array.length;
        QuickSort(array, 0, n-1);
        for(int i=0;i<n;i++) {
            System.out.println(array[i]);
        }


    }

    private static void QuickSort(int[] num, int left, int right) {
        // 如果left=right,即数组中只剩一个元素时,直接返回
        if(left>=right) {
            return;
        }
        // 设置最左边的元素为基准值
        int key = num[left];
        //数组中比key小的放在左边,比key大的放在右边
        int i = left;
        int j = right;
        while(i<j) {
            //j向左移动,直到碰到比key小的数
            while(num[j]>=key && i<j) {
                j--;
            }
            //i向右移动,直到碰到比key大的数
            while(num[i]<=key && i<j) {
                i++;
            }
            //i和j指向的元素交换
            if(i<j) {
                int temp = num[i];
                num[i] = num[j];
                num[j] = temp;
            }
        }
        num[left] = num[i];
        num[i] = key;
        QuickSort(num, left, i-1);
        QuickSort(num, i+1, right);
    }

}
02-14 04:54