//Autor: Filipe Areias Névola
//Ano: 2008
//Programa: Merge-Sort
//Licensa: Você pode usar e alterar, mas deve manter o Autor
//Principal
void mergeSort(int t){
int p=0,r=t-1;
mergeS(p,r);
}
//Divisão
void mergeS(int p,int r){
int q;
if(p<r){
q=(p+r)/2;
mergeS(p,q);
mergeS(q+1,r);
merge(p,q,r);
}
}
//Intercalação
void merge(int p,int q,int r){
int i=p,j=q+1,k=0;
while(i<=q && j<=r){
if(v[i]<v[j])
B[k]=v[i++];
else
B[k]=v[j++];
k++;
}
while(i<=q){
B[k]=v[i];
i++,k++;
}
while(j<=r){
B[k]=v[j];
j++,k++;
}
for(i=p,k=0;i<=r;i++,k++)
v[i]=B[k];
}
Não deixe de conferir a explicação teórica desse algoritmo![ 21/05/2009 ]
0
Merge-Sort em C / C++
Código Fonte em C/C++: