Skip to content

Instantly share code, notes, and snippets.

@kevinah95
Created April 25, 2019 19:01
Show Gist options
  • Save kevinah95/063b3bcaf73dad99be9d9537056201c7 to your computer and use it in GitHub Desktop.
Save kevinah95/063b3bcaf73dad99be9d9537056201c7 to your computer and use it in GitHub Desktop.
let quicksort = (arr) => {
quicksortHelper(arr, 0, arr.length - 1)
}
let quicksortHelper = (arr, first, last) => {
if(first < last){
let p = partition(arr, first, last)
quicksortHelper(arr, first, p - 1)
quicksortHelper(arr, p + 1, last)
}
}
let partition = (arr, first, last) => {
let pivot = arr[first]
let lMark = first + 1
let rMark = last
let done = false
while (!done) {
while (arr[lMark] <= pivot && lMark <= rMark) {
lMark++
}
while (arr[rMark] >= pivot && lMark <= rMark) {
rMark--
}
if (lMark > rMark) {
done = true
} else {
let temp = arr[lMark]
arr[lMark] = arr[rMark]
arr[rMark] = temp
}
}
let temp = arr[first]
arr[first] = arr[rMark]
arr[rMark] = temp
return rMark
}
let arr = [9,8,7]
quicksort(arr)
console.log(arr)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment