Update index.md (#32810)

This commit is contained in:
King Josaphat Chewa
2019-05-23 00:14:04 +01:00
committed by Tom
parent b9426e055d
commit d6f641ec34

View File

@ -15,64 +15,64 @@ The steps involved in Quick Sort are:
### Implementation in JavaScript: ### Implementation in JavaScript:
```javascript ```javascript
const arr = [6, 2, 5, 3, 8, 7, 1, 4] const arr = [6, 2, 5, 3, 8, 7, 1, 4];
const quickSort = (arr, start, end) => { const quickSort = (arr, start, end) => {
if(start < end) { if(start < end) {
// You can learn about how the pivot value is derived in the comments below // You can learn about how the pivot value is derived in the comments below
let pivot = partition(arr, start, end) let pivot = partition(arr, start, end);
// Make sure to read the below comments to understand why pivot - 1 and pivot + 1 are used // Make sure to read the below comments to understand why pivot - 1 and pivot + 1 are used
// These are the recursive calls to quickSort // These are the recursive calls to quickSort
quickSort(arr, start, pivot - 1) quickSort(arr, start, pivot - 1);
quickSort(arr, pivot + 1, end) quickSort(arr, pivot + 1, end);
} }
} }
const partition = (arr, start, end) => { const partition = (arr, start, end) => {
let pivot = 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] // 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 // Succeeding comments will expound upon the above comment
let i = start - 1 let i = start - 1,
let j = start j = start;
// Increment j up to the index preceding the pivot // Increment j up to the index preceding the pivot
while (j < pivot) { while (j < pivot) {
// If the value is greater than the pivot increment j // If the value is greater than the pivot increment j
if (arr[j] > arr[pivot]) { if (arr[j] > arr[pivot]) {
j++ j++;
} }
// When the value at arr[j] is less than the pivot: // 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] // increment i (arr[i] will be a value greater than arr[pivot]) and swap the value at arr[i] and arr[j]
else { else {
i++ i++;
swap(arr, j, i) swap(arr, j, i);
j++ j++;
} }
} }
//The value at arr[i + 1] will be greater than the value of arr[pivot] //The value at arr[i + 1] will be greater than the value of arr[pivot]
swap(arr, i + 1, 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] //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 // As such, when the recursive quicksorts are called, the new sub arrays will not include this the previously used pivot value
return i + 1 return i + 1;
} }
const swap = (arr, firstIndex, secondIndex) => { const swap = (arr, firstIndex, secondIndex) => {
let temp = arr[firstIndex] let temp = arr[firstIndex];
arr[firstIndex] = arr[secondIndex] arr[firstIndex] = arr[secondIndex];
arr[secondIndex] = temp arr[secondIndex] = temp;
} }
quickSort(arr, 0, arr.length - 1) quickSort(arr, 0, arr.length - 1);
console.log(arr) console.log(arr);
``` ```
### Implementation in C ### Implementation in C