forked from kelvins/algorithms-and-data-structures
-
Notifications
You must be signed in to change notification settings - Fork 0
/
QuickSort.js
33 lines (24 loc) · 1001 Bytes
/
QuickSort.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function quickSort(vetorDesordenado, inicio, fim){
let quantidadeDePosicoes = fim - inicio;
if(quantidadeDePosicoes > 1){
let posicaoDoPivo = particiona(vetorDesordenado, inicio, fim);
quickSort(vetorDesordenado, inicio, posicaoDoPivo);
quickSort(vetorDesordenado, posicaoDoPivo + 1, fim);
}
return vetorDesordenado;
}
function particiona(vetor, inicio, fim){
let pivo = vetor[fim - 1];
let menoresEncontrados = 0;
for (var i = 0; i < fim - 1; i++) {
if(vetor[i] <= pivo){
[vetorDesordenado[i], vetorDesordenado[menoresEncontrados]] = [vetorDesordenado[menoresEncontrados], vetorDesordenado[i]];
menoresEncontrados++;
}
}
[vetorDesordenado[fim - 1], vetorDesordenado[menoresEncontrados]] = [vetorDesordenado[menoresEncontrados], vetorDesordenado[fim - 1]];
return menoresEncontrados;
}
var vetorDesordenado = [54,42,11,33,24,99,77,80];
let vetorOrdenadoViaQuickSort = quickSort(vetorDesordenado, 0, vetorDesordenado.length);
console.log(vetorOrdenadoViaQuickSort);