Boa noite
gostaria de uma ajuda só pra comentar este código sobre MergeSort, fiz algumas linhas mas não entendi muito bem como funciona as que deixei sem comentar, se alguém puder ajudar eu agradeço desde já.
Caso eu tenha comentado algo errado me corrijam, obrigado
#include<stdio.h>
void intercalar (int v[],int aux[],int ini1, int ini2,int fim2) //funcao de intercalacao para organizar o vetor
{
int in1=ini1,in2=ini2,fim1=in2-1,au=0,i; //definicao das variaveis como inteiro
while(in1<=fim1 && in2<=fim2) //definicao dos valores de cada lado do vetor
{
if (v[in1]<v[in2])
{
aux[au++] = v[in1++];
}
else
{
aux[au++] = v[in2++];
}
}
while(in1<=fim1)
{
aux[au++] = v[in1++];
}
while(in2<=fim2)
{
aux[au++] = v[in2++];
}
for(i=0;i<au;i++){
v[i+ini1]=aux[i];}
}
void mergeSort (int v[], int aux[],int esq, int dir) //funcao que executa o processo MergeSort
{
int meio,i;
if(esq<dir)
{
meio=(esq+dir)/2; //calcula o meio do vetor
mergeSort(v,aux,esq,meio); //iteracao do MergeSort para o lado esquerdo do vetor
mergeSort(v,aux,meio+1,dir); //iteracao do MergeSort para o Lado direito do vetor
intercalar(v,aux,esq,meio+1,dir); //faz a chamada da funcao intercalar
}
}
int main()
{
int v[10]={4,2,10,8,9,3,7,5,6,1},aux[10],i; //vetor de entrada dos dados de forma aleatoria, vetor auxiliar, controle
mergeSort(v,aux,0,9); // chamada da funcao
for(i=0;i<10;i++) //loop para exibir o resultado já ordenado
{
printf("%d\t",v[i]);
}
return 0;
}