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

mergesort que no ordena c++

Estas en el tema de mergesort que no ordena c++ en el foro de C/C++ en Foros del Web. Hola a todos, vengo solicitandoles ayuda ya que he estado teniendo problemas con la elaboración de dicho algoritmo de ordenamiento, no ordena los enteros que ...
  #1 (permalink)  
Antiguo 29/03/2012, 02:51
 
Fecha de Ingreso: noviembre-2011
Mensajes: 3
Antigüedad: 12 años, 5 meses
Puntos: 0
mergesort que no ordena c++

Hola a todos, vengo solicitandoles ayuda ya que he estado teniendo problemas con la elaboración de dicho algoritmo de ordenamiento, no ordena los enteros que se le envían y al ir imprimiendo cada uno de los "mini arreglos" que se van creando y ordenando de forma recursiva aparecen numeros que nisiquiera estan en el arreglo. Acá esta el código, ojalá me puedan ayudar.

void Ordenador::mergesort(int * arreglo, unsigned tamano){
if(tamano > 1){
int tamano1 = tamano / 2;
int tamano2 = tamano - tamano1;
int* subArreglo1 = new int [tamano1];
int* subArreglo2 = new int [tamano2];
for(int i = 0; i < tamano1; i++){
subArreglo1[i] = arreglo[i];
}
for(int i = tamano1; i < tamano; i++){
subArreglo1[i-tamano1] = arreglo[i];
}
mergesort(subArreglo1, tamano1);
mergesort(subArreglo2, tamano2);
arreglo = merge(subArreglo1, tamano1, subArreglo2, tamano2);
}
}

int* Ordenador::merge(int * subArreglo1, int tamano1, int * subArreglo2, int tamano2){
int tamano = tamano1 + tamano2;
int* nuevoArreglo = new int [tamano];
int indice1 = 0;
int indice2 = 0;
for(int i = 0; i < tamano; i++){
if(subArreglo1[indice1] <= subArreglo2[indice2] && indice1 < tamano1){
nuevoArreglo[i] = subArreglo1[indice1];
indice1++;
} else{
if(indice2 < tamano2){
nuevoArreglo[i] = subArreglo2[indice2];
indice2++;
}
}
}
return nuevoArreglo;
}

Etiquetas: int, 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 15:35.