chore(JavaScript): quick sort added (#270)

pull/273/head
Hemang Pandey 2021-04-27 22:41:17 +05:30 committed by GitHub
parent 2259537cd9
commit 56a12bc250
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 51 additions and 2 deletions

View File

@ -14,8 +14,9 @@
## Sorting
1. [Bubble Sort](src/sorting/bubble-sort.js)
2. [Insertion Sort](src/sorting/insertion-sort.js)
3. [Selection Sort](src/sorting/selection-sort.js)
4. [Merge Sort](src/sorting/merge-sort.js)
3. [Merge Sort](src/sorting/merge-sort.js)
4. [Quick Sort](src/sorting/quick-sort.js)
5. [Selection Sort](src/sorting/selection-sort.js)
## Strings
1. [Palindrome](src/strings/palindrome.js)

View File

@ -12,6 +12,8 @@ require('./searching/linear-search');
// Sorting
require('./sorting/bubble-sort');
require('./sorting/insertion-sort');
require('./sorting/merge-sort');
require('./sorting/quick-sort');
require('./sorting/selection-sort');
// Strings

View File

@ -0,0 +1,46 @@
function swap(items, leftIndex, rightIndex) {
const temp = items[leftIndex];
items[leftIndex] = items[rightIndex];
items[rightIndex] = temp;
}
function partition(items, left, right) {
const pivot = items[Math.floor((right + left) / 2)]; // middle element
let i = left; // left pointer
let j = right; // right pointer
while (i <= j) {
while (items[i] < pivot) {
i++;
}
while (items[j] > pivot) {
j--;
}
if (i <= j) {
swap(items, i, j); // sawpping two elements
i++;
j--;
}
}
return i;
}
function quickSort(items, left, right) {
let index;
if (items.length > 1) {
index = partition(items, left, right); // index returned from partition
if (left < index - 1) {
// more elements on the left side of the pivot
quickSort(items, left, index - 1);
}
if (index < right) {
// more elements on the right side of the pivot
quickSort(items, index, right);
}
}
return items;
}
// first call to quick sort
const items = [5, 3, 7, 6, 2, 9];
const sortedArray = quickSort(items, 0, items.length - 1);
console.log(sortedArray); // prints [2,3,5,6,7,9]