快速排序实现

对于序列 8 1 4 9 0 3 5 2 7 6的第一趟排序过程为i , j

8 1 4 9 0 3 5 2 7 6

6 1 4 9 0 3 5 2 7 x

6 1 4 x 0 3 5 2 7 9

6 1 4 7 0 3 5 2 x 9

6 1 4 7 0 3 5 2 8 9

package jd;

/**
 * 快速排序
 * 
 * @author li
 * 
 */
public class QuickSort {
    public int sort(int[] num, int start, int end) {
        int tmp = num[start];
        while (start < end) {
            while (start < end && num[end] >= tmp) {
                end--;
            }
            if (start < end) {
                num[start] = num[end];
                start++;
            }
            while (start < end && num[start] < tmp) {
                start++;
            }
            if (start < end) {
                num[end] = num[start];
                end--;
            }
        }
        num[end] = tmp;
        return end;

    }

    public void quickSort(int[] num, int start, int end) {
        if (start < end) {
            int index = sort(num, start, end);
            quickSort(num, start, index - 1);
            quickSort(num, index + 1, end);
        }

    }

    public static void main(String[] args) {
        int[] num = { 8, 1, 4, 9, 0, 3, 5, 2, 7, 6 };
        QuickSort quickSort = new QuickSort();
        quickSort.quickSort(num, 0, num.length - 1);
        for (int i = 0; i < num.length; i++) {
            System.out.println(num[i]);
        }
    }

}

 

posted @ 2016-04-10 23:32  程序猿进化之路  阅读(141)  评论(0)    收藏  举报