Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Merge Sort c++

Estas en el tema de Merge Sort c++ en el foro de C/C++ en Foros del Web. Hice una implementación del merge sort pero por razones q desconozco no funciona como debería, si alguien me puede decir cómo arreglarlo sería de gran ...
  #1 (permalink)  
Antiguo 29/03/2012, 19:54
 
Fecha de Ingreso: marzo-2012
Mensajes: 1
Antigüedad: 12 años, 7 meses
Puntos: 0
Merge Sort c++

Hice una implementación del merge sort pero por razones q desconozco no funciona como debería, si alguien me puede decir cómo arreglarlo sería de gran ayuda! Gracias...

Código:
Cita:
void Ordenador::mergesort(int* arreglo, unsigned tamano){
int mitad = tamano/2;
int * arreglo1 = new int[mitad];
int * arreglo2 = new int[tamano-mitad];
if (tamano > 1){
for(int i=0; i<mitad; i++){
arreglo1[i] = arreglo[i];
}
for(int i=mitad; i<tamano; i++){
arreglo2[i-mitad] = arreglo[i];
}
mergesort(arreglo1, mitad);
mergesort(arreglo2, (tamano - mitad));

}
merge(arreglo,arreglo1,mitad,arreglo2,(tamano-mitad));
//delete arreglo1, arreglo2;
}

void Ordenador::merge(int* arregloOrdenado, int* arreglo1, int tamano1, int* arreglo2, int tamano2){
//Respectivamente los indices de los arreglos: izquierda (arreglo1), derecha(arreglo2) y ordenado.
int izq = 0, der = 0, ord = 0;
while (izq < tamano1 && der < tamano2){
if(arreglo1[izq] < arreglo2[der]){
arregloOrdenado[ord] = arreglo1[izq];
izq++;
}
else{
arregloOrdenado[ord] = arreglo2[der];
der++;
}
ord++;
}
}
Si el número del segundo arreglo es menor que el del segundo arreglo se copia dos veces el menor en vez de que se ordene, no sé si me entienden :/

Etiquetas: funcion, int, sort, arreglos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:56.