|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Serg 2:5020/400 04 Jan 2003 03:40:50 To : Artem Chuprina Subject : Re: Сравнение массивов -------------------------------------------------------------------------------- Sat Dec 28 2002 23:26, Artem Chuprina wrote to Dmitry Lisitsin: AC> From: Artem Chuprina <ran@ice.ru> DL>> Все это замечательно работает. Hо с некоторых пор объемы этих массивов DL>> по независящим от меня обстоятельствам _значительно_ увеличились, и DL>> теперь на всю сортировку требуется каких-нибудь 14 часов ;о) DL>> Собственно вопрос: как это хозяйство оптимизировать можно? AC> perldoc -q 'difference.*arrays' Сорри, но первый раз такое, что бы твоя ссылка в perldoc не работала:). Выдает "No documetation...". А вот если без кавычек ( perldoc -q difference.*arrays), то выдает: - --- How do I compute the difference of two arrays? How do I compute the intersection of two arrays? Use a hash. Here's code to do both and more. It assumes that each element is unique in a given array: @union = @intersection = @difference = (); %count = (); foreach $element (@array1, @array2) { $count{$element}++ } foreach $element (keys %count) { push @union, $element; push @{ $count{$element} > 1 ? \@intersection : \@difference }, $element; } Note that this is the *symmetric difference*, that is, all elements in either A or in B, but not in both. Think of it as an xor operation. - --- Это на случай если у кого еще не заработало:). --- ifmail v.2.15dev5 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/16679675e5dc6.html, оценка из 5, голосов 10
|