Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX 10
- void merge(int A[], int iniIzq, int finIzq, int iniDer, int finDer){
- int ordenados[MAX];
- int indice_izq = iniIzq;
- int indice_der = iniDer;
- int indice_ord = iniIzq;
- while((indice_izq <=finIzq) && (indice_der <=finDer)){
- if (A[indice_izq] < A[indice_der]){
- ordenados[indice_ord] = A[indice_izq];
- indice_izq++;
- }else{
- ordenados[indice_ord] = A[indice_der];
- indice_der++;
- }
- indice_ord++;
- }
- while(indice_izq <= finIzq)
- ordenados[indice_ord++] = A[indice_izq++];
- while(indice_der <= finDer)
- ordenados[indice_ord++] = A[indice_der++];
- for (indice_ord=iniIzq; indice_ord<=finDer; indice_ord++)
- A[indice_ord] = ordenados[indice_ord];
- }
- void merge_sort(int A[], int ini, int fin){
- if (ini<fin){
- int medio = (ini + fin)/2;
- merge_sort(A, ini, medio);
- merge_sort(A, medio + 1, fin);
- merge(A, ini, medio, medio+1, fin);
- }
- }
- void pprint(int A[]){
- int i;
- for(i=0;i<MAX;i++)
- printf("%d ", A[i]);
- printf("\n");
- }
- int main(int argc, char** argv) {
- int N[MAX] = {3, 6, 1, 8, 9, 2, 5, 0, 7, 4};
- printf("Arreglo Original:\n");
- pprint(N);
- merge_sort(N,0,MAX-1);
- printf("Arreglo Ordenado:\n");
- pprint(N);
- return (EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement