diff --git a/spec/sort.spec.js b/spec/sort.spec.js index b42510a..45eff94 100644 --- a/spec/sort.spec.js +++ b/spec/sort.spec.js @@ -1,6 +1,6 @@ import { merge, - bubbleSort, selectionSort, insertionSort, mergeSort + bubbleSort, selectionSort, insertionSort, mergeSort, quickSort } from '../src/algorithms/sort.js' describe("Function", function () { @@ -43,4 +43,10 @@ describe("Function", function () { numbers = mergeSort(numbers); expect(numbers).toEqual(sorted); }); + + it(quickSort.name + " which sorts numbers", function () { + let numbers = createNumbers(); + quickSort(numbers, 0, numbers.length - 1); + expect(numbers).toEqual(sorted); + }); }); diff --git a/src/algorithms/sort.js b/src/algorithms/sort.js index 7b9d37e..ba5c52e 100644 --- a/src/algorithms/sort.js +++ b/src/algorithms/sort.js @@ -86,14 +86,25 @@ export function merge(left, right) { return array; } +export function quickSort(array, left, right) { + if (left >= right) return; -// bubbleSort(numbers); -// selectionSort(numbers); -// insertionSort(numbers); -// console.log(numbers); + let start = left; + let end = right; -// merge([1, 2, 5, 6, 44, 99], [0, 4, 63, 87, 283]) + let pivot = array[right] + while (left < right) { + if (array[left] > pivot) { + array[right] = array[left]; + array[left] = array[right - 1]; + array[right - 1] = pivot; -// const answer = mergeSort(numbers); + right--; + } else { + left++; + } + } -// console.log(answer); \ No newline at end of file + quickSort(array, start, left - 1) + quickSort(array, left + 1, end) +}