Quick Sort 重點在 partition 跟 recursively sort

還有一個重點,就是在做 partition 時,while 裡面的條件要 always start < end

public void quickSort(int[] nums) {
    qsort(nums, 0, nums.length - 1);
}

public void qsort(int[] nums, int s, int e) {
    if (e <= s) {
        return;
    }
    int idx = partition(nums, s, e);
    qsort(nums, s, idx - 1);
    qsort(nums, idx + 1, e);
}
public int partition(int[] nums, int s, int e) {
    int pivot = nums[s];
    while (e > s) {
        while (e > s && nums[e] > pivot) {
            e--;
        }
        nums[s] = nums[e];
        while (s < e && nums[s] < pivot) {
            s++;
        }
        nums[e] = nums[s];
    }
    nums[s] = pivot;
    return s;
}

O(nlogn), worse case O(n2)

results matching ""

    No results matching ""