Я написал все это, но я получаю смутные ошибки. Я не знаю, что не так ... тьфу. Также вы можете спросить, почему нерекурсивно хорошо, что мой учитель так поступает для теста.
void nonrec_mergesort(vector <int> & a, vector <int> & b, int s, int r)
{
int m = 1;
while (m <= r)
{
int i = 0;
while(s < (r-m))
{
stl_merge(a, b, i, ((i+i+m-1)/2), (i+m-1));
stl_merge(a, b, i+m, (min(i+2*m-1,r-1)+(i+m))/2, min(i+2*m-1,r-1));
s = s + (2*m);
}
m = m * 2;
}
}