alexcon314 Спасибо! Сейчас почитаю.
Добавлено через 4 часа 34 минуты
Что я подробно начал изучать предложенный Вами алгоритм Шелла, а он даже на сайте неправильно работает. Вот пример кода скопированного с сайта -

Код AS3:
package
{
import flash.display.Sprite;
import flash.geom.Point;
public class Main extends Sprite
{
private var _array:Vector.<Point>;
public function Main()
{
_array = new <Point>[];
for (var i:int = 0; i < 10; i++)
{
_array[i] = new Point(random(),0)
}
shellSort(_array);
}
private function shellSort(data:Vector.<Point>): void
{
var n:int = data.length;
var inc:int = int(n/2);
while (inc)
{
for (var i:int = inc; i < n; i++)
{
var temp:Point= data[i], j:int = i;
while (j >= inc && data[int(j - inc)].x > temp.x)
{
data[j] = data[int(j - inc)];
j = int(j - inc);
}
data[j] = temp
}
inc = int(inc / 2.2);
}
for (var k:int = 0; k < data.length; k++)
{
trace((data[k] as Point).x); // 2,3,4,5,5,5,5,6,9,7
}
}
private function random():int
{
return Math.random() * 10;
}
}
}