Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка многомерного ряда, Чтобы второй элемент перемещался с первы 
:(
    Опции темы
CPLUSPLUS
Дата 30.4.2005, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 22.10.2003

Репутация: нет
Всего: 2



Здравствуйте!
Подскажите-ка быстренько, превеликие люди, как сортировать двумерный массив по первой измерений, чтобы привязанное к нему второе автоматом перемещалось вследзаним.
То есть:
Код

$array[0][0] = 'Петюнчик';
$array[0][1] = 'Самураев';
$array[1][0] = 'Василек';
$array[1][1] = 'Щасдайев';

И при печати по порядку было:
Василек Щасдайев
Петюнчик Самураев

Хотя у меня вообще-то числовые данные...
Премного благодарю за внимание.
PM MAIL   Вверх
korob2001
Дата 30.4.2005, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Код

#!/usr/bin/perl -w
use strict;
my @array = ();

$array[0][0] = 'Петюнчик';
$array[0][1] = 'Самураев';
$array[1][0] = 'Василек';
$array[1][1] = 'Щасдайев';
$array[2][0] = 'Василек';
$array[2][1] = 'Колобков';

foreach my $ref ( sort { $a->[0] cmp $b->[0]
                                 ||
                         $a->[1] cmp $b->[1] } @array ) {
     print $ref->[0] . " " . $ref->[1] . "\n";
}

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

Если сортируешь числовые данные, то замени cmp на <=>

Возникнут вопросы по коду, пиши.

Удачи.

Это сообщение отредактировал(а) korob2001 - 30.4.2005, 09:45


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
CPLUSPLUS
Дата 30.4.2005, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 22.10.2003

Репутация: нет
Всего: 2



Thank You!!!
Чрезвычайно умный код, у Холзнера такого нет, сейчас буду разбираться...
PM MAIL   Вверх
Kiber_rat
Дата 1.5.2005, 02:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

Репутация: 7
Всего: 9



Если сортировка второй размерности массива (фамилии в данном примере) не нужна
Цитата
сортировать двумерный массив по первой измерений, чтобы привязанное к нему второе автоматом перемещалось вследзаним
то достаточно будет и такого кода:
Код
#!/usr/bin/perl -w
use strict;
my @array = ();
$array[0][0] = 'Петюнчик';    
$array[0][1] = 'Самураев';    
$array[1][0] = 'Василек';    
$array[1][1] = 'Щасдайев';    
$array[2][0] = 'Василек';    
$array[2][1] = 'Колобков';
print "@$_\n" for sort {$a->[0] cmp $b->[0]} @array;



--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
korob2001
Дата 1.5.2005, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Kiber_rat smile
Да я знаю, просто хотелось помочь человеку чуть больше, чем ему хотелось. Хотя может это и лишнее.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Kiber_rat
Дата 2.5.2005, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

Репутация: 7
Всего: 9



Да просто меня как обычно потянуло на рефакторинг smile


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.