В настоящее время пытается изучить язык программирования D.Попытка написать Quicksort в D, получить OutOfMemoryError
Написал этот маленький quicksort algo, который возвращает OutOfMemoryError при работе с отправленным примером.
import std.stdio;
import std.algorithm;
int[] qs(int[] ary)
{
if(ary.length <= 1)
{
return ary;
}
int pivot_pos = 0;
int pivot = ary[pivot_pos];
for(int i = 0; i < ary.length; i++)
{
if(ary[i] < pivot)
{
ary = ary.remove(i) ~ ary;
pivot_pos++;
}
else
{
ary ~= ary.remove(i);
if(i < pivot_pos)
pivot_pos--;
}
}
return qs(ary[0..pivot_pos]) ~ qs(ary[(pivot_pos+1)..ary.length]);
}
int main()
{
int[] ary = [ 2, 1, 4, 1, 6, 78, 3, 5, 10, 129, 234, 3, 5 ];
ary = qs(ary);
foreach(int element; ary)
{
printf("%d ", element);
}
return 0;
}
Любые подсказки, как решить это или что не так в алго? Любые советы, как узнать D и что мне нужно заботиться?