Pessoal, estou com SÉRIOS problemas em entender esse merge sorte (estou travado nisso tentando entender uns 5 dias kkk), eu quero entender bem como tudo esta funcionando no codigo pois da forma que esta na minha cabeça agora, sozinho eu nao iria conseguir montar ele, estou com duvida na parte do ^ return array; ^, enquanto está desorganizado o if esta funcionando e partindo os arrays no meio e organizando certo ? pq depois que eles começam a se juntar e ficar organizado os arrays o if não continua funcionando e partindo os arrays ? na minha cabeça deveria entrar na condição if de novo, mesmo que organizado pois as vezes o array tem mais que um elemento
const listaLivros = require("./array2");
function mergeSort(array, nivel = 0){
if(array.length > 1){
console.log("")
console.log(`array entrando em merge sorte `)
console.log("")
console.log(`nivel = ${nivel}`)
console.log("")
console.log(array)
console.log("")
const meioArray = Math.floor(array.length/2);
const lista1 = mergeSort(array.slice(0,meioArray), nivel + 1);
const lista2 = mergeSort(array.slice(meioArray, array.length), nivel + 1);
array = ordena(lista1, lista2)
}
return array;
}
function ordena(lista1, lista2){ console.log('lista 1 -') console.log("") console.log(lista1) console.log("") console.log('lista 2 -') console.log("") console.log(lista2) console.log("") let posLista1 = 0 let posLista2 = 0 const resultado = [];
while(posLista1 < lista1.length && posLista2 < lista2.length){
let produtoAtualLista1 = lista1[posLista1]
let produtoAtualLista2 = lista2[posLista2]
if(produtoAtualLista1.preco < produtoAtualLista2.preco){
resultado.push(produtoAtualLista1);
console.log("produto 1 passou na frente")
posLista1++
}else{
resultado.push(produtoAtualLista2);
console.log("produto 2 passou na frente")
posLista2++
}
}
let resultado2 = resultado.concat(posLista1 < lista1.length ? (lista1.slice(posLista1)): (lista2.slice(posLista2)));
console.log("")
console.log("saindo de ordena - ")
console.log("")
console.log(resultado2)
console.log("")
return resultado2
}
console.log(mergeSort(listaLivros));