Skip to content

Instantly share code, notes, and snippets.

@Drowze
Last active December 4, 2015 05:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Drowze/8275bd617726209312a2 to your computer and use it in GitHub Desktop.
Save Drowze/8275bd617726209312a2 to your computer and use it in GitHub Desktop.
#sort #sorting #puc apc-b 2016
#include <stdio.h>
void merge(int v[], int inicio, int meio, int fim) {
int aux[100];
int aux_inicio = inicio, aux_meio = meio + 1, k=0;
while(aux_inicio <= meio && aux_meio <= fim)
if(v[aux_inicio] <= v[aux_meio])
aux[k++] = v[aux_inicio++];
else
aux[k++] = v[aux_meio++];
for(aux_inicio = aux_inicio; aux_inicio <= meio; aux_inicio++)
aux[k++] = v[aux_inicio];
for(aux_meio = aux_meio; aux_meio <= fim; aux_meio++)
aux[k++] = v[aux_meio];
k=0;
for(aux_inicio = inicio; aux_inicio <= fim; aux_inicio++) //copia aux para v
v[aux_inicio] = aux[k++];
}
void merge_sort(int v[], int inicio, int fim) {
int meio = (inicio + fim) / 2;
if(inicio < fim) {
merge_sort(v, inicio, meio);
merge_sort(v, meio + 1, fim);
merge(v, inicio, meio, fim);
}
}
int main (void) {
int var[] = {0, 6, 4, 2, 16, 22, 3, 9};
merge_sort(var, 0, 7);
int i;
for (i = 0; i < 8; i++)
printf("%d ", var[i]);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment