|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexander Kostiuchenko 2:463/468.5 18 Jun 2001 05:03:04 To : George Subject : Удалить/отследить из массива одинаковые элементы -------------------------------------------------------------------------------- Как-то раз (а точнее 17 Jun 01 в 23:37) George писал(а) к Sasha Breger: SB>> Как быстpее всего удалить из массива одинаковые элементы? G> А как быстpее всего добавить в массив/список элемент, если такового G> там ещё нет (и не добавлять, если есть)? push @arr,$elem unless grep {$elem} @arr; Hо - здается мне, что при большом кол-ве подобных операций лучше вместо массива юзать хэш, где ключ - значение элемента, а значение - его порядковый номер (если важно сохранить порядок элементов). Добавить элемент: $h{$elem} = $top++ unless defined($h{$elem}); перед первым добавлением: $top = ((sort {$b <=> $a} values %h)[0]) + 1; Превратить хэш в массив: @arr = map { $a{$_} } sort {$a <=> $b} keys %a if %a = reverse %h; defined то явно выполняется быстрее grep ... -- mailto: random at info.net.ua //Александр * Origin: useless (2:463/468.5) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/28453b2d971c.html, оценка из 5, голосов 10
|