Discussão:Merge sort
Adicionar tópicopublic static void mergeSort(int [ ] x,int [ ] xTemp, int esq, int dir) { if(esq < dir) { int medio = (esq + dir)/2; mergeSort(x,xTemp,esq,medio); mergeSort(x,xTemp,medio+1,dir); mezclar(x,xTemp,esq,medio+1,dir); } } public static void mezclar (int [ ] x,int [ ] xAux,int posEsq, int posDir,int posFin) { int finIzq = posDir - 1; int posAux = posEsq; int numElementos = posFin - posEsq +1; // Busca principal while(posEsq <= finIzq && posDir <= posFin) if( x[posEsq] < x[posDir] ) xAux[posAux++] = x[posEsq++]; else xAux[posAux++] = x[posDir++]; // Copia primeira metade while (posEsq <= finIzq) xAux[posAux++] = x[posEsq++]; // Copia segunda metade while (posDir <= posFin) xAux[posAux++] = x[posDir++]; // Copia veteor temporário no principal for(int i = 0; i < numElementos; i++, posFin--) x[posFin] = xAux[posFin]; } }
Junto ou separado?[editar código-fonte]
Não seria "mergesort" ao invés de "merge sort"?? Lipe λ FML 00h34min de 21 de Março de 2008 (UTC)
Algoritmo mais eficiente provado "cientificamente" ??[editar código-fonte]
O que seria cientificamente? Onde está a prova? Radix, por exemplo, é mais eficiente, pois é O(n), que é menor que O(n.log(n)).
Recursão e eficiência ?[editar código-fonte]
A frase abaixo da introdução esta conceitualmente errada e deve ser removida:
"Como o algoritmo do Merge Sort usa a recursividade em alguns problemas esta técnica não é muito eficiente devido ao alto consumo de memória e tempo de execução."
Isso pode levar a conclusão errada de que o quicksort é ineficiente já que ele utiliza recursão.
Revisão de português é necessária.[editar código-fonte]
O texto está pontuado de forma incorreta em praticamente todas as frases, o que torna difícil a compreensão das ideias e muitas vezes compromete a correção das afirmações.