Показать сообщение отдельно
Старый 24.04.2014, 18:48
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 29  
Ответить с цитированием
Akopalipsis
Banned

Регистрация: Mar 2013
Сообщений: 1,864
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;
		}
	}
}