А Вы не подскажете, где нужно в диспетчере задач смотреть потребляемую память? я смотрю в процессах - ( внизу картинка )
А у меня вот какой код для shellSort, работает он в полтора раза быстрей Вашего, но наверное памяти тоже больше занимает ( ссылку на источник не могу привести не помню.. ).

Код AS3:
private final function shellSort(array:Array, comparator:Function):void
{
var data:*, i:int, j:int, gap:int, gapIndex:int, gapSequence:Array = new Array(), length:int = array.length;
gapSequence[0] = 1;
while (++i < 11)
{
gapSequence[i] = Math.pow(4, i + 1) + 3 * Math.pow(2, i) + 1;
if (gapSequence[i] < length)
gapIndex = i;
else
break;
}
gapIndex++;
while(--gapIndex >= 0)
{
gap = gapSequence[gapIndex];
i = gap - 1;
while (++i < length)
{
j = i;
data = array[i];
while (j >= gap && comparator(data,array[j - gap]) == -1)
{
array[j] = array[j - gap];
j -= gap;
}
array[j] = data;
}
}
}