Olá pessoal, estou estudando estruturas de dados com Javascript e até agora tava tudo ok. Só que quando eu cheguei nos algoritmos de ordenação, mais especificamente no merge sort, eu acabei travando, não consigo entender a ordem de execução que ele segue. Há uma dupla recursão, enfim, tá bem confuso pra mim. Se alguém puder ajudar eu agradeço muito. Segue o código:
var mergeSortRec = function(array) {
var length = array.length
if(length === 1) {
return array
}
var mid = Math.floor(length / 2),
left = array.slice(0, mid),
right = array.slice(mid, length)
return merge(mergeSortRec(left), mergeSortRec(right))
}
var merge = function(left, right) {
var result = [],
il = 0,
ir = 0
while(il < left.length && ir < right.length) {
if(left[il] < right[ir]) {
result.push(left[il++])
} else {
result.push(right[ir++])
}
}
while(il < left.length) {
result.push(left[il++])
}
while(ir < right.length) {
result.push(right[ir++])
}
return result
}
Suponha que o array inserido seja esse: [6,2,5,2,4,5]