Merge sort: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
→‎Código em C: Eliminada redundancia de operador.
Linha 182:
=== Implementação em C++ ===
<syntaxhighlight lang="c++">
void merge(int *saida, int *auxiliar, int inicio, int meio, int fim);{
int i, j, k;
i = inicio;
j = meio + 1;
k = inicio;
while(i <= meio && j <= fim){
if(auxiliar[i] < auxiliar[j]){
array saida[k] = auxiliar[i];
i++;
}
else{
array saida[k] = auxiliar[j];
j++;
}
k++;
}
 
while(i <= meio){
void mergeSort(int *array, int *auxiliar, int inicio, int fim)
array saida[k] = auxiliar[i];
{
i++;
if(inicio < fim)
k++;
{
}
int meio = (inicio + fim) / 2;
 
while(j <= fim){
mergeSort(array, auxiliar, inicio, meio);
array saida[k] = auxiliar[j];
mergeSort(array, auxiliar, meio + 1, fim);
j++;
merge(array, auxiliar, inicio, meio, fim);
k++;
}
}
//Copia os elementos que foram ordenados para o auxiliar
for(int p = inicio; p <= fim; p++)
auxiliar[p] = saida [p];
}
 
void merge(int *array, int *auxiliar, int inicio, int meio, int fim)
{
int i, j, k;
 
i = inicio;
j = meio + 1;
k = inicio;
 
void mergeSort(int *arraysaida, int *auxiliar, int inicio, int fim){
while(i <= meio && j <= fim)
if(inicio < fim){
{
int meio = (inicio + fim) / 2;
if(auxiliar[i] < auxiliar[j])
mergeSort(arraysaida, auxiliar, inicio, meio);
{
mergeSort(arraysaida, auxiliar, meio + 1, fim);
array[k] = auxiliar[i];
merge(arraysaida, auxiliar, inicio, meio, fim);
i++;
}
}
else
{
array[k] = auxiliar[j];
j++;
}
k++;
}
 
while(i <= meio)
{
array[k] = auxiliar[i];
i++;
k++;
}
 
while(j <= fim)
{
array[k] = auxiliar[j];
j++;
k++;
}
}
</syntaxhighlight>Outra implementação em [[C++]]:<syntaxhighlight lang="c++" line="1">