From 4b0e689f2c5069172b61036aa91a9cca35bbb730 Mon Sep 17 00:00:00 2001 From: kevinr Date: Tue, 22 Jun 2021 23:28:52 -0700 Subject: [PATCH] added quick sort algorithm version 1 --- src/sortingAlgorithms/sortingAlgorithms.js | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/src/sortingAlgorithms/sortingAlgorithms.js b/src/sortingAlgorithms/sortingAlgorithms.js index ac833f1..f816ef3 100644 --- a/src/sortingAlgorithms/sortingAlgorithms.js +++ b/src/sortingAlgorithms/sortingAlgorithms.js @@ -6,6 +6,60 @@ export function getMergeSortAnimations(array) { return animations; } + +export function getQuickSortAnimations(array){ + /*const animations = []; + if(array.length <= 1) return array; + const auxiliaryArray = array.slice(); + quickSortHelper(array, 0, array.length -1, auxiliaryArray, animations); + */ + + + + } + + function quickSortHelper( + mainArray, + startIdx, // left + endIdx, // right + auxiliaryArray, + animations, + ){ + var l = startIdx; + var r = endIdx - 1; + var size = endIdx - startIdx; // getting the size + + if(size > 1){ + var pivot = mainArray[Math.floor(Math.random() % size + l)]; + while(l < r){ + while(mainArray[r] > pivot && r > l){ + r--; + } + while(mainArray[l] < pivot && l <= r) + { + l++; + } + if(l < r){ + swap(mainArray[l], mainArray[r]); + l++; + } + if(l < r){ + swap(mainArray[l], mainArray[r]); + l++; + } + } + quickSortHelper(mainArray, startIdx, l); + quickSortHelper(mainArray, r, right); + } + //if(startIdx === endIdx) return; // If we have same index, that means only one array, return the function + //const middleIdx = Math.floor((startIdx + endIdx) / 2); // Our pivot + + //quickSortHelper(auxiliaryArray, startIdx, middleIdx, mainArray, animations); + //quickSortHelper(auxiliaryArray, middleIdx + 1, endIdx, mainArray, animations); + + } + + function mergeSortHelper( mainArray, startIdx,