快速排序

package com.tony.sort;

/** * 快速排序 */
public class QuickSort {

    private static void quickSort(int[] table, int low, int high) {
        if (low < high) {

            int i = low;
            int j = high;
            int vot = table[i];

            while (i != j) { // 一趟排序

                while (i < j && vot <= table[j]) { // 从后向前寻找小于基准值的数
                    j--;
                }

                if (i < j) {
                    table[i] = table[j];  //小于基准值的数移动到i位置
                    i++;
                }

                while (i < j && table[i] < vot) { //从前向后寻找较大值
                    i++;
                }

                if (i < j) {  
                    table[j] = table[i];  //较大元素向后移动到j位置
                    j--;
                }
            }

            table[i] = vot; // 基准值的最终位置

            quickSort(table, low, j - 1); // 前端子序列再排序

            quickSort(table, i + 1, high); // 后端子序列再排序
        }

    }

    public static void main(String[] args) {
        int[] table = new int[]{38,26,97,19,66,1,5,49};
        quickSort(table,0,table.length-1);
        print(table);
    }

    private static void print(int[] table) {
        for(int t : table){
            System.out.print(t+",");
        }
    }
}

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