Показать сообщение отдельно
Старый 28.04.2014, 18:36
PsixokoT вне форума Посмотреть профиль Отправить личное сообщение для PsixokoT Найти все сообщения от PsixokoT
  № 23  
Ответить с цитированием
PsixokoT

Регистрация: May 2008
Сообщений: 63
Цитата:
Сообщение от Akopalipsis Посмотреть сообщение
Меньше чем в этом. А тот где сравнивается с in лучше чем Ваш, быстрее в несколько раз.
вы сильно ошибаетесь в силу того, что не знаете как устроена работа indexOf.

запустите у себя код:
Код AS3:
var n:int = 1000000;
trace("N = " + n);
var array:Array = [];
for (var i:int = 1; i <= n; i++) {
	array.push(i);
}
 
var rand:int = Math.random() * n;
var num:int = array.splice(rand, 1);
trace("Удалили число " + num);
array.sort(function(...args):int {
	return Math.random() > 0.5 ? -1 : 1;
});
 
var t:Number = getTimer();
 
//1 способ
var value:Number = 0;
for (i = 1; i <= n; i++) {
	value += i;
	if (i - 1 < array.length) value -= array[i - 1];
}
 
trace("Удаленное число(1 способ) = " + value);
trace("time = " + (getTimer() - t));
 
t = getTimer();
 
//2 способ
for(i = 1; i <= array.length + 1; i++) {
	if(array.indexOf(i) < 0) {
		trace("Удаленное число(1 способ)  = " + i);
		trace("time = " + (getTimer() - t));
	}
}