Implementação do Merge Sort em C++ (O que ferrou minha turma num curso de Java, e que eu passei pra C++)
Código:
struct
Merge
{
float a[50];
void merge_sort(int low, int high)
{
int mid;
if (low < high)
{
mid=(low+high)/2;
merge_sort(low, mid);
merge_sort(mid+1, high);
merge(low, mid, high);
}
}
void merge(int low, int mid, int high)
{
int h(low), i(low), j(mid+1), k;
float b[50];
while ((h <= mid) && (j <= high))
{
if (a[h] <= a[j])
{
b[i] = a[h];
h++;
}
else {
b[i] = a[j];
j++;
}
i++;
}
if (h>mid)
{
for (k=j; k<=high; k++, i++)
b[i] = a[k];
}
else {
for (k=h; k<=mid; k++, i++)
b[i] = a[k];
}
for (k=low; k<=high; k++)
a[k] = b[k];
}
};