# JavaScript Quicksort recursive

We are required to write a JavaScript function that takes in an array of Numbers. The function should apply the algorithm of quicksort to sort the array either in increasing or decreasing order.

## QuickSort Algorithm

Quicksort follows the below steps −

Step 1 − Make any element as the pivot (preferably first or last, but any element can be the pivot)

Step 2 − Partition the array on the basis of pivot

Step 3 − Apply a quick sort on the left partition recursively

Step 4 − Apply a quick sort on the right partition recursively

The average and best case time complexity of QuickSort are O(nlogn) whereas in worst cases, it can slow up to O(n^2).

## Example

The code for this will be −

const arr = [5,3,7,6,2,9];
const swap = (arr, leftIndex, rightIndex) => {
let temp = arr[leftIndex];
arr[leftIndex] = arr[rightIndex];
arr[rightIndex] = temp;
};
const partition = (arr, left, right) => {
let pivot = arr[Math.floor((right + left) / 2)];
let i = left;
let j = right;
while (i <= j) {
while (arr[i] < pivot) {
i++;
};
while (arr[j] > pivot) {
j--;
};
if (i <= j) {
swap(arr, i, j); //sawpping two elements
i++;
j--;
};
};
return i;
}
const quickSort = (arr, left = 0, right = arr.length - 1) => {
let index;
if (arr.length > 1) {
index = partition(arr, left, right);
if (left < index - 1) {
quickSort(arr, left, index - 1);
};
if (index < right) {
quickSort(arr, index, right);
};
}
return arr;
}
let sortedArray = quickSort(arr);
console.log(sortedArray);

## Output

And the output in the console will be −

[ 2, 3, 5, 6, 7, 9 ]

Updated on: 24-Nov-2020

569 Views