快速排序实例

来源:互联网 发布:用中文域名的大公司 编辑:程序博客网 时间:2024/05/27 19:25

快速排序是根据待排序数组中的某一值val,将待排序数组分割成两部分数据,前一部分数组比val小

,后一部分数组比val大,之后对每部分数据重复上述过程,最终实现待排序数组的有序性,实例如下:

public class QuickSortMain {    public static void main(String[] args) {        sort();    }    /**     * 切分待排序数组     * @param arr     * @param low     * @param high     * @return     */    static int split(int[] arr, int low, int high) {        int key = arr[low];        while (low < high) {            while (low < high && arr[high] >= key) high--;            arr[low] = arr[high];            while (low < high && arr[low] <= key) low++;            arr[high] = arr[low];        }        arr[low] = key;        return low;    }    /**     * 递归切分数据     * @param arr     * @param low     * @param high     */    static void sort(int[] arr, int low, int high) {        if (low < high) {            int mid = split(arr, low, high);            sort(arr, low, mid - 1);            sort(arr, mid + 1, high);        }    }    static void sort(int[] arr) {        sort(arr, 0, arr.length - 1);    }    static void sort() {        int[] arr = {8, 1, 3, 3, 45, 2, 5, 1, 9, 2, 6, 7};        sort(arr);        System.out.println(Arrays.toString(arr));    }}

原创粉丝点击