2-اگه کسی کدی هم از این الگوریتم داره ممنون میشیم ببینیم
void merge_sort (int n, int a[])
{
const int n_first = n / 2, n_second = n - n_first;
int first[n_first], second[n_second];
if (n > 1)
{
for (int i = 0; i < n_first; i++)
first[i] = a[i];
for (int i = n_first; i < n; i++)
second[i - n_first] = a[i];
merge_sort (n_first, first);
merge_sort (n_second, second);
merge (first, n_first, second, n_second, a);
}
}
void merge (int first[], int n_first, int second[], int n_second, int a[])
{
int ifirst = 0, isecond = 0, i = 0;
while (ifirst < n_first && isecond < n_second)
{
if (first[ifirst] < second[isecond])
a[i] = first[ifirst++];
else
a[i] = second[isecond++];
i++;
}
if (ifirst < n_first)
for (int k = ifirst; k < n_first; k++)
a[i++] = first[k];
else
for (int k = isecond; k < n_second; k++)
a[i++] = second[k];
}