Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Исключение элемента массива с наибольшей длинной из множества (http://www.flasher.ru/forum/showthread.php?t=169562)

Tasmanec 07.10.2011 16:42

Цитата:

Сообщение от GBee (Сообщение 1037662)
Цитата:

а вот так не пойдет?
Может и пойдет, надо тестить по времени. Правда ваш пример оптимизнуть можно (больше вместо не меньше, length не теребить).

Что-то не совсем понял, какую строчку Вы имели ввиду:confused:

Inet_PC 07.10.2011 16:43

Код AS3:

var t:Number= getTimer();
 
//...code
 
trace(getTimer() - t);


Tasmanec 07.10.2011 16:56

Inet_PC, отличный метод)

GBee 07.10.2011 16:58

Цитата:

Что-то не совсем понял, какую строчку Вы имели ввиду
Код AS3:

maxLenght <= myMassiv[i].length

хватит "<"

Вот еще заметил maxLenght = 0 изначально.

Tasmanec 07.10.2011 17:03

GBee, Полностью согласен:)
сейчас исправлю:)

Добавлено через 4 минуты
Цитата:

Сообщение от GBee (Сообщение 1037677)
[as3]maxLenght = 0;[as3] изначально

привычка с плюсов осталась. бяка всякая получалась после, если пустую переменную объявить.

zorexundra 07.10.2011 17:12

Если верить методе Inet_PC, реализация Tasmanec исполняется быстрее...
Хм... Хотя у меня какая-то ошибка в тесте:
Код AS3:

var t:Number= getTimer();
trace("duration: " + t);
var firstArray:Array = [1, 1, 1, 1, 1, 1, 1, 1, 1];
var secondArray:Array = [2, 2, 2, 2];
var thirdArray:Array = [3, 3, 3, 3, 3, 3];
var myMassiv: Array = [firstArray, secondArray, thirdArray];
var maxLenght:Number;  //максимальная длина массива из множества массивов
var idArray: Number = 0//номер массива с максимальной длиной на данном шаге       
while(maxLenght > 0) {
  for(var i:int = 0; i < myMassiv.lenght; i++) {
      if (maxLenght < myMassiv[i].lenght) {
        maxLenght = myMassiv[i].lenght;
        idArray = i;
      }                                       
  }                               
  trace(myMassiv[idArray].pop());//делаете, что надо с каким Вам нужно элементом массива с максимальной длинной это будет массив myMassiv[idArray]                               
}
trace("Время:"+(getTimer() - t));

Трейс не выводит элементы.

GBee 07.10.2011 17:51

length != lenght

Добавлено через 1 минуту
Выполняется быстрее, потому что maxLenght = 0 изначально, то есть в цикл не входит. ;о)

Tasmanec 07.10.2011 17:57

Цитата:

Сообщение от zorexundra (Сообщение 1037685)
Если верить методе Inet_PC, реализация Tasmanec исполняется быстрее...
Хм... Хотя у меня какая-то ошибка в тесте:

maxLenght имеет пустое значение
надо вместо
Код AS3:

var maxLenght:Number;

Код AS3:

var maxLenght:Number = 1;

должно заработать)

Добавлено через 2 минуты
говорил же, что лучше сразу приписывать значения переменным))

Inet_PC 07.10.2011 18:22

Код AS3:

var maxLenght:Number;

и
Код AS3:

var maxLenght:int;

Не одно и тоже. В первом случае maxLenght == NaN, а во втором 0.

zorexundra 10.10.2011 10:44

Цитата:

Сообщение от Tasmanec (Сообщение 1037694)
maxLenght имеет пустое значение
надо вместо
Код AS3:

var maxLenght:Number;

Код AS3:

var maxLenght:Number = 1;

должно заработать)

Получился бесконечный цикл...


Часовой пояс GMT +4, время: 15:58.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.