diff --git a/Sorting/QuickSort.js b/Sorting/QuickSort.js new file mode 100644 index 0000000..6fe90eb --- /dev/null +++ b/Sorting/QuickSort.js @@ -0,0 +1,55 @@ +const quickSort = (arr, start, end) => { + + if(start < end) { + + // You can learn about how the pivot value is derived in the comments below + let pivot = partition(arr, start, end) + + // Make sure to read the below comments to understand why pivot - 1 and pivot + 1 are used + // These are the recursive calls to quickSort + quickSort(arr, start, pivot - 1) + quickSort(arr, pivot + 1, end) + } + +} + +const partition = (arr, start, end) => { + let pivot = end + // Set i to start - 1 so that it can access the first index in the event that the value at arr[0] is greater than arr[pivot] + // Succeeding comments will expound upon the above comment + let i = start - 1 + let j = start + + // Increment j up to the index preceding the pivot + while (j < pivot) { + + // If the value is greater than the pivot increment j + if (arr[j] > arr[pivot]) { + j++ + } + + // When the value at arr[j] is less than the pivot: + // increment i (arr[i] will be a value greater than arr[pivot]) and swap the value at arr[i] and arr[j] + else { + i++ + swap(arr, j, i) + j++ + } + + } + + //The value at arr[i + 1] will be greater than the value of arr[pivot] + swap(arr, i + 1, pivot) + + //You return i + 1, as the values to the left of it are less than arr[i+1], and values to the right are greater than arr[i + 1] + // As such, when the recursive quicksorts are called, the new sub arrays will not include this the previously used pivot value + return i + 1 +} + +const swap = (arr, firstIndex, secondIndex) => { + let temp = arr[firstIndex] + arr[firstIndex] = arr[secondIndex] + arr[secondIndex] = temp +} + +quickSort(arr, 0, arr.length - 1) \ No newline at end of file pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy