Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include<stdlib.h> #include<stdio.h> void merge(int v[], int l, int m, int r){ int f, j, k; int n = m - l + 1; int n2 = r - m; int L1[n], R[n2]; for (f = 0; f < n; f++) L1[f] =v[l + f]; for (j = 0; j < n2; j++) R[j] = v[m + 1+ j]; f = 0; j = 0; k = l; while (f < n && j < n2) { if (L1[f] <= R[j]) { v[k] = L1[f]; f++; } else { v[k] = R[j]; j++; } k++; } while (f < n) { v[k] = L1[f]; f++; k++; } while (j < n2) { v[k] = R[j]; j++; k++; } } int min(int x, int y) { return (x<y)? x :y; } void mergeSort(int v[], int n){ int i; int j; for (i=1; i<=n-1; i = 2*i) { for (j=0; j<n-1; j+= 2*i) { int k = j + i - 1; int c = min(j + 2*i - 1, n-1); merge(v,j, k, c); } } } void imprimir(int v[], int tam){ int i; for (i=0; i < tam; i++) printf("%d ", v[i]); printf("\n"); } int main(){ int v[10] = {10,9,8,7,6,5,4,3,2,1}; int n = sizeof(v)/sizeof(v[0]); printf("Vetor: \n"); imprimir(v, n); mergeSort(v, n); printf("\n\nVetor Ordenado: \n"); imprimir(v, n); return 0; }
Compartilhar