Bueno no se si esto va aqui pero alla voy.
Tengo que implementar el metodo de ordenacion mergeSort con dos Arrays de Ints de forma recurisva en C# y tengo un pequeño problema.Por mas que lo miro y miro y debugo no encuentro la razon.A veces cambia un numero por un 0.Sin mas dilacion os dejo el codigo
static int[] MergeSort(int[]t)
{
int[] resultat;
int aux;
if (t.Length<=2)
{
if (t.Length == 2)
{
if (t[0] > t[1])
{
aux = t[1];
t[1] = t[0];
t[0] = aux;
}
}
resultat = t;
}
else
{
int[] tAux=new int[t.Length/2];
int[] tAux2 = new int[t.Length - tAux.Length];
Array.Copy(t, 0, tAux, 0, tAux.Length);
Array.Copy(t, t.Length / 2, tAux2, 0, tAux2.Length);
tAux = MergeSort(tAux);
tAux2 = MergeSort(tAux2);
resultat = taulaFusionada(tAux, tAux2);
}
return resultat;
}
Ya se que es una chapuza,seria muy facil cojer los miles de algoritmos que estan por internet y copiarlos,pero es para clase y me gustaria hacerlo bien.Entre copiarlo entero y pedir un poco de ayuda pues prefiero lo segundo
Comentar que la funcio Copy de la clase Array como bien dice su nombre copia un Array a otro,en resumidas cuentas le paso el array de origen,el indice desde donde partiremos,el array destino,el indice inicial del array de destino y la longitud del array de destino.
No creo que el problema sea de la parte del Merge(la funcion TaulaFusionada)porque esta testeada a parte y funciona bien.