Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define size_max 100
- void mergeSort(int *arr, int 1, int r);
- void mezcla(int *a, int ini, int med, int fin);
- void printarray (int *A, int size);
- int main() {
- int *arr, i;
- srand(time(0));
- arr=(int*)calloc(size_max,sizeof(int));
- int arr_size=size_max;
- printf("\n\t Tamanio del arreglo: %d", arr_size);
- for(i=0; i<arr_size; i++) arr[i]=rand()%arr_size;
- printf("\n\t Arreglo inicial: \n", arr_size);
- printarray(arr, arr_size);
- mergeSort (arr, 0, arr_size-1);
- printf("\n\t Arreglo ordenado: \n", arr_size);
- printarray(arr, arr_size);
- free(arr);
- return 0;
- }
- void printarray (int *A, int size){
- int i;
- for(i=0, i<size; i++)
- printf("%d ", *(A+i));
- printf("\n";
- }
- void mergeSort(int *arr, int 1, int r){
- int med;
- if(ini<=fin){
- med=(ini+fin)/2;
- mergeSort(a, ini, med);
- mergeSort(a, med+1, fin);
- mezcla (a, ini, med, fin);
- }
- }
- void mezcla(int *a, int ini, int med, int fin){
- int *aux, m;
- aux = malloc((fin - ini + 1)*sizeof(int));
- int i = ini; int j = med + 1; int k = 0;
- while (i <= med && j <= fin) {
- if (a[i] < a[j]) {aux[k] = a[i]; i++;}
- else {aux[k] = a[j]; j++;}
- k++;
- }
- while (i <= med ) {aux[k] = a[i]; i++; k++;}
- while (j <= fin ) {aux[k] = a[j]; j++; k++;}
- for (m = 0; m < fin-ini+1; m++) {a[ini+m]= aux[m];}
- free(aux);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement