0
當前正試圖學習D編程語言。試圖在D中編寫Quicksort,得到OutOfMemoryError
寫了這個小的快速排序算法,它在運行示例中運行時返回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和我必須關心什麼?