//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++: