8. Sort Array nlogn

8. Sort an Array

Sort an Array - LeetCode

Quick Sort with 1 pivot: failed → worst O(n^2)

Time: Time over

Space:

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var sortArray = function (nums) {
    quickSort(nums, 0, nums.length - 1);
    return nums;
};

function quickSort(arr, left, right) {
    if (left >= right) {
        return arr;
    }

    const pivotIndex = partition(arr, left, right);
    quickSort(arr, left, pivotIndex - 1);
    quickSort(arr, pivotIndex + 1, right);
    return arr;
}

function partition(arr, left, right) {
    let pivot = right;
    let pointer = left;
    while (left < pivot) {
        if (arr[left] < arr[pivot]) {
            swap(arr, pointer, left);
            pointer++;
            console.log(pointer)
        }
        left++;
    }
    swap(arr, pointer, pivot);

    return pointer;
}

function swap(arr, a, b) {
    const temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
    return arr;
}

Quick Sort with 2 pivots ⇒ good when duplicates

One-Pivot Quick Sort and Three-Way Partition Quick Sort for Duplicates, w. Explanation | 36 ms, Java - Sort an Array - LeetCode

Merge Sort

Time: O(nlogn)

Space: O(N^2)

using temp array

Heap Sort

Time: buildHeap: O(nlogn) remove: O(logn)

Space: O(n)

Last updated