Показать сообщение отдельно
Старый 03.06.2014, 12:56
SvetozarPNZ вне форума Посмотреть профиль Отправить личное сообщение для SvetozarPNZ Найти все сообщения от SvetozarPNZ
  № 16  
Ответить с цитированием
SvetozarPNZ
 
Аватар для SvetozarPNZ

Регистрация: Dec 2009
Сообщений: 125
Записей в блоге: 1
Цитата:
Сообщение от elder_Nosferatu Посмотреть сообщение
На знаю как далеко зашли в оптимизации сортировки массивов, но те методы, которые я учил на уроках информатики в школьные годы не назовешь очень быстрыми... Короче, трудовой мозоль на пятой точке подсказывает мне, что плеер быстрее найдет свойство обьекта своими методами, чем вы будете его из-под палки заставлять сортировать ничем ему не интересный массив. Да и поиск свойства осуществляется максимум полным пребором все имеющихся свойств, а сортировку массива за один проход не сделаешь . Плюс поиск предполагает только операцию сравнения, а сортировка - кроме сравнения еще и присваивание значения.
На хабре пописывают про методики, обгоняющие стандартные методы ActionScript.
Говоря о сортировки я не имел в виду стандартных методов. У меня немножко другой подход со схожими алгоритмами.
В программе появилась ссылка, ее нужно по алфавиту вставить в массив (не сортировать весь массив! он уже сортируется в процессе сбора ссылок). Чтобы найти место для ссылки в сортированном индексном массиве из 1 млрд элементов достаточно 40 итераций. Или, как я выше выяснил, всего 1 проверку в ассоциативном массиве.

Чтобы собрать 1 млрд ссылок, нужно проводить проверки 115 суток...

Добавлено через 1 минуту
Цитата:
Сообщение от ChuwY Посмотреть сообщение
Совсем не долго выполняет.
Видимо, ошибка где-то еще.
Покажите ваш код.
Код AS3:
package 
{
 
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
 
	public class Main extends MovieClip
	{
 
		var startBut;
		var links;
		var massiv;
		var massLink = [];
		var obj:Object = new Object();
		var e;
 
		public function Main()
		{
			startBut = getChildByName('start');
			startBut.addEventListener(MouseEvent.CLICK, writeMassiv);
 
			links = getChildByName('links1');
			massiv = getChildByName('massiv1');
		}
		public function writeMassiv(e)
		{
 
			while (links.text)
			{
				var currentLink:String = links.text.substring(0,links.text.indexOf('\r'));
				links.text = links.text.substr(links.text.indexOf('\r') + 1);
				massiv.text +=  currentLink + '\r';
				if (!obj[currentLink]) obj[currentLink] = true
				else (trace(currentLink, '- такая ссылка есть');
			}
			if (! links.text)
			{
				trace('ссылок нет');
			}
 
		}
	}
}