Java算法 - 快速排序

快速排序,升序。釋義參考百度百科

public static void quickSort(int[] ints, int start, int end) {
    int pivot = ints[start], i = start, j = end;
    while (i < j) {
        // 從右向左找小於pivot的數來填ints[i]
        while (i < j && ints[j] >= pivot) {
            j--;
        }
        if (i < j) {
            ints[i] = ints[j];
            i++;
        }
        // 從左向右找大於或等於pivot的數來填ints[j]
        while (i < j && ints[i] < pivot) {
            i++;
        }
        if (i < j) {
            ints[j] = ints[i];
        }
        ints[i] = pivot;
        // 左邊區間快速排序
        quickSort(ints, start, i - 1);
        // 右邊區間快速排序
        quickSort(ints, i + 1, end);
    }
}

 

測試代碼:

import java.util.Arrays;

public class QuickSort {
    public static void main(String[] args) {
        int[] ints = {9, 12, 0, 5, -1, -1};
        quickSort(ints, 0, ints.length - 1);
        System.out.println(Arrays.toString(ints));
    }

    public static void quickSort(int[] ints, int start, int end) {
        int pivot = ints[start], i = start, j = end;
        while (i < j) {
            // 從右向左找小於pivot的數來填ints[i]
            while (i < j && ints[j] >= pivot) {
                j--;
            }
            if (i < j) {
                ints[i] = ints[j];
                i++;
            }
            // 從左向右找大於或等於pivot的數來填ints[j]
            while (i < j && ints[i] < pivot) {
                i++;
            }
            if (i < j) {
                ints[j] = ints[i];
            }
            ints[i] = pivot;
            // 左邊區間快速排序
            quickSort(ints, start, i - 1);
            // 右邊區間快速排序
            quickSort(ints, i + 1, end);
        }
    }
}
View Code

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章