Показать сообщение отдельно
Старый 29.01.2004, 20:00
SPV вне форума Посмотреть профиль Отправить личное сообщение для SPV Найти все сообщения от SPV
  № 2  
SPV
 
Аватар для SPV

Регистрация: Jan 2000
Адрес: St-Petersburg
Сообщений: 1,229
Отправить сообщение для SPV с помощью ICQ
Я бы ввел хэш из сортируемого массива, где ключи - элементы массива, а значения - их индексы... Потом сортируем массив и из хэша получаем отсортированные индексы, зная которые автоматом получаем отсортированные все остальные массивы... во навернул Лучше на примере:
Код:
@arr1 = ('a', 'b', 'c', 'c');
@arr2 = ('b', 'c', 'a', 'c');
@arr3 = ('c', 'a', 'b', 'c');
@sorted = &sortIndexes(\@arr3);
foreach my $i(@sorted) {
  print $arr1[$i]." - ".$arr2[$i]." - ".$arr3[$i]."\n";
}

sub sortIndexes {
  my $arr = shift;
  my %hash = ();
  foreach my $i(0..$#{$arr}) {
    @{$hash{$arr->[$i]}} = () if (!defined $hash{$arr->[$i]});
    push @{$hash{$arr->[$i]}}, $i;
  }
  my @result = ();
  foreach my $sorted(sort @{$arr}) {
    push @result, @{$hash{$sorted}};
    @{$hash{$sorted}} = ();
  }
  return @result;
}
__________________
Two beer or not two beer?...