MergeSort es un algoritmo de ordenamiento eficiente que utiliza la técnica de "dividir y conquistar", consiste en dividir repetidamente la lista original en mitades hasta que cada sublista tenga un solo elemento, luego fusiona esas sublistas de manera ordenada. La clave de MergeSort es la operación de fusión, donde combina dos sublistas ordenadas en una única lista ordenada.
1. Ingresar valores numéricos del 1 al 10.
2. Se necesitan por lo menos 3 valores para poder ser
ordenados.
3. Presione "Aleatorio" para generar valores al azar.
4. Cada valor corresponde al tamaño de las barras en el
gráfico.
5. Cuando las barras se colorean de verde significa que han
sido ordenadas.
6. Presione "Ordenar" para ejecutar el algoritmo y ordenar
los valores de forma ascendente.
7. Presione "Limpiar" para borrar el gráfico.
function mergeSort(arreglo){
if(arreglo.length <= 1){
return arreglo;
}
const medio = Math.floor(arreglo.length / 2);
const izquierda = arreglo.slice(0, medio);
const derecha = arreglo.slice(medio);
const izqOrdenado = mergeSort(izquierda);
const derOrdenado = mergeSort(derecha);
return merge(izqOrdenado, derOrdenado);
}
function merge(izquierda, derecha){
let resultado = [];
let izqIndex = 0;
let derIndex = 0;
while(izqIndex < izquierda.length && derIndex < derecha.length){
if(izquierda[izqIndex] < derecha[derIndex]){
resultado.push(izquierda[izqIndex]);
izqIndex++;
}else{
resultado.push(derecha[derIndex]);
derIndex++;
}
}
while(izqIndex < izquierda.length){
resultado.push(izquierda[izqIndex]);
izqIndex++;
}
while(derIndex < derecha.length){
resultado.push(derecha[derIndex]);
derIndex++;
}
return resultado;
}