8. Sort Array nlogn
8. Sort an Array
Quick Sort with 1 pivot: failed → worst O(n^2)
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
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