【java数据结构】快速排序

来源:互联网 发布:攻破网站数据库 编辑:程序博客网 时间:2024/06/07 21:10
package quicklySort;public class QuicklySort {    /**     * 获取枢纽下标     * @param arr     * @param left     * @param right     * @return     */    private static int getStart(int arr[],int left,int right) {        int temp = arr[left];//选一个值作为中间值作为枢纽        while(left<right) {//从右向左找比temp小的            while(arr[right] >= temp && left < right) {                right--;            }            if(left<right) {                arr[left] = arr[right];//将比temp小的放在低端                left++;            }            while(arr[left] <= temp && left < right) {//从左向右找比temp大的                left++;            }            if(left<right) {                arr[right] = arr[left];//将比temp大的放在高端                right--;            }        }        arr[left] = temp;//当left = right时,将中间值放下            return left;//返回枢纽下标    }    /**     * 快速排序     * @param arr     * 待排序数组     * @param left     * 起点     * @param right     * 终点     */    public static void quickSort(int[] arr,int left,int right) {        if(left < right) {            int s = getStart(arr,left,right);            quickSort(arr, left, s-1);            quickSort(arr, s+1, right);        }    }    /**     * 快速排序     * @param arr     * 待排序数组     */    public static void quickSort(int[] arr) {        int left = 0;        int right = arr.length-1;        if(left < right) {            int s = getStart(arr,left,right);            quickSort(arr, left, s-1);            quickSort(arr, s+1, right);        }    }}
原创粉丝点击