não consigo resolver o código.
Lista utilizada:
const produtos =
[
{
titulo:"Casa Monstro",
preco:15,
},
{
titulo:"Harry Potter",
preco:50,
},
{
titulo:"H.P.LoveCraft: mitos e lendas",
preco:55,
},
{
titulo:"A casa da arvore de 30 andares",
preco: 30
},
{
titulo:"O magico de Oz",
preco: 18,
},
{
titulo:"RezendeEvil vs Herobrine 2",
preco: 27,
},
{
titulo:"Um zumbi a rodo",
preco:47,
},
]
module.exports = produtos;
código de troca de posição:
function trocaDeLugar(array,de,para){
const elem1 = array[de];
const elem2 = array[para];
array[para] = elem1;
array[de] = elem2;
}
arquivo do quickSort:
const produtos = require('./mergeSort1');
const trocaDeLugar = require('./pivo');
function quikSort (array,esquerda,direita){
if(array.length > 1){
let indiceAtual = particiona(array,esquerda,direita);
if(esquerda < indiceAtual){
quikSort(array,esquerda,indiceAtual - 1);
}
if(indiceAtual < esquerda){
quikSort(array,direita,indiceAtual - 1);
}
}
return array
}
function particiona(array,esquerda,direita){
let pivo = array[Math.floor(esquerda + direita/2)]
let atualEsquerda = esquerda;
let atualDireita = direita;
while (atualEsquerda <= atualDireita){
while(array[atualEsquerda].preco < pivo.preco){
atualEsquerda++
}
while(array[atualDireita].preco > pivo.preco){
atualDireita--
}
if ( atualEsquerda <= atualDireita){
trocaDeLugar(array,atualEsquerda,atualDireita)
atualEsquerda++
atualDireita--
}
}
return atualEsquerda;
}
console.log(quikSort(produtos,0,produtos.length - 1))
resultado obtido no terminal:
Windows PowerShell
Copyright (C) Microsoft Corporation. Todos os direitos reservados.
Experimente a nova plataforma cruzada PowerShell https://aka.ms/pscore6
PS C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS> node quickSort.js
{ titulo: 'A casa da arvore de 30 andares', preco: 30 }
[
{ titulo: 'Casa Monstro', preco: 15 },
{ titulo: 'O magico de Oz', preco: 18 },
{ titulo: 'RezendeEvil vs Herobrine 2', preco: 27 },
{ titulo: 'A casa da arvore de 30 andares', preco: 30 },
{ titulo: 'Harry Potter', preco: 50 },
{ titulo: 'H.P.LoveCraft: mitos e lendas', preco: 55 },
{ titulo: 'Um zumbi a rodo', preco: 47 }
]
C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS\quickSort.js:18
function particiona(array,esquerda,direita){
^
RangeError: Maximum call stack size exceeded
at particiona (C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS\quickSort.js:18:20)
at quikSort (C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS\quickSort.js:6:27)
at quikSort (C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS\quickSort.js:8:13)
at quikSort (C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS\quickSort.js:8:13)
at quikSort (C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS\quickSort.js:8:13)
at quikSort (C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS\quickSort.js:8:13)
at quikSort (C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS\quickSort.js:8:13)
at quikSort (C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS\quickSort.js:8:13)
at quikSort (C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS\quickSort.js:8:13)
at quikSort (C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS\quickSort.js:8:13)
PS C:\Users\alhan\OneDrive\Área de Trabalho\JavaScript\primeiro módulo de aprendizagem do JS>