Você está na página 1de 3

#include<stdio.h> #include<stdlib.

h> /// Funcoes de Merge Sort void merge_sort (int ini, int tam, int vet[]) { if (ini < tam-1) { int meio = (ini + tam)/2; //parte do codigo que ele divide o vetor merge_sort (ini, meio, vet); merge_sort (meio, tam, vet); intercala (ini, meio, tam, vet); } } void intercala(int ini, int meio, int tam, int vet[]) { int aux i = j = k = i, j, k, *aux; = malloc ((tam-ini)*sizeof (int)); ini; meio; 0;

while (i < meio && j < tam){ if (vet[i] <= vet[j]){ aux[k++] = vet[i++]; } else{ aux[k++] = vet[j++]; } } while (i < meio){ aux[k++] = vet[i++]; } while(j < tam){ aux[k++] = vet[j++]; } for (i = ini; i < tam; ++i){ vet[i] = aux[i-ini]; } free (aux); } /// Funcoes do Quick Sort int separa (int *vet, int ini, int fim) { int comp = vet[ini]; int i = ini+1; int j = fim; int tmp; while (i <= j) { if (vet[i] <= comp){ i++; }

else if (comp < vet[j]){ j--; } else { tmp = vet[i]; vet[i] = vet[j]; vet[j] = tmp; i++; j--; } } vet[ini] = vet[j]; vet[j] = comp; return j; } void quick_sort (int *vet, int ini, int fim) { int j; if (ini < fim) { j = separa(vet, ini, fim); quick_sort(vet, ini, j-1); quick_sort(vet, j+1, fim); } }

/// Funcoes do Heap Sort void heap_sort(int *vet, int tam) { int meio = (int)tam/2, pai, filho; int tmp; int fim= 1; while (fim != 0) { if (meio > 0) { meio--; tmp = vet[meio]; } else { tam--; if (tam == 0){ return; } tmp = vet[tam]; vet[tam] = vet[0]; } pai = meio; filho = meio*2 + 1; while (filho < tam)

{ if ((filho + 1 < tam) && (vet[filho + 1] > vet[filho])){ filho++; } if (vet[filho] > tmp) { vet[pai] = vet[filho]; pai = filho; filho = pai*2 + 1; } else{ break; } } vet[pai] = tmp; } } int main() { int vet[]={6,100,87,3,5,78,3,5,7,2}; int tam = 10, i = 0; /// Merge Sort merge_sort(0,tam,vet); for(i = 0;i < tam;i++){ printf("%d\n",vet[i]); } /// Quick Sort /* quick_sort(&vet,0,10); for(i = 0;i < tam;i++){ printf("%d\n",vet[i]); } */ /// Heap Sort /* heap_sort(vet,tam); for(i = 0;i < tam;i++){ printf("%d\n",vet[i]); } */ return 0; }

Você também pode gostar