Pregunta: | 7044 - ALGORITMO DE FUSION |
Autor: | Daniel Edgardo bastonero |
Quisiera saber si alguien sabe o la implementacion del algoritmo de ordenamiento por fusion de la forma correcta para ordenar un vector que se encuntra desordenado. |
Respuesta: | sinapse |
Aqui tienes una version recursiva para ordenar tablas de enteros.
Empieza ordenado subtablas pequeñas (de tamaño 1, sigue la recursividad) y las va combinando (al ir volviendo de las llamadas recursivas). No se te olvide incluir int MergeSort(iint * T,int P,int U) { int M; if (P>U) return -1; else { M=(P+U)/2; // Este es el pivote if (MergeSort(T,P,M)==-1) return -1; if (MergeSort(T,M+1,U)==-1) return -1; Combinar(T,P,U,M); } } int Combinar(int * T,int P,int U, int M) { int * Aux; // Tabla auxiliar int i,j,k; // Indices para recorrer las tablas if ((Aux=(int*)malloc((U-P+1)*sizeof(int)))==NULL) return -1; i=P; j=M+1; K=p; while ((i<=M)&&(j<=U)) { if (T[i] k++; } if (i>M) // Si se ha pasado i while(j<=U) Aux[k++]]=T[j++]; else while(i<=M) Aux[k++]=T[i++]; T=Aux; // Hay que copiar Aux en T, pero no aseguro que funcione asi free(Aux); } Pues eso, si quieres una version no recursiva o algun otro algoritmo solo escribeme. Salu2 |