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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка двумерного массива 
V
    Опции темы
loginn
Дата 22.12.2010, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Значит, вот пример. Запустите, посмотрите вывод. Проблема в том, что когда сортирую по возрастанию по второму столбцу, часть значений первого снова перемешивается.

#!/usr/bin/perl -w

@ip=(["1.1.1.1",363],["4.4.4.4",53],["7.7.7.7",1234],["2.2.2.2",892],["3.3.3.3",743],["1.1.3.1",201],["2.2.2.2",645],["5.5.5.5",48],["1.1.1.1",270],["2.2.2.$


print "Before any sort:\n";
for ($i=0; $i<15; $i++){
                        print "                ".$ip[$i][0]." - ".$ip[$i][1]."\n";
                       }




print "After IP sort:\n";
@ip = sort {$a->[0] cmp $b->[0]} @ip;
for ($i=0; $i<15; $i++){
                        print "               ".$ip[$i][0]." - ".$ip[$i][1]."\n";
                       }


print "After Time sort:\n";
@ip = sort {$a->[1] <=> $b->[1]} @ip;
for ($i=0; $i<15; $i++){
                        print "                 ".$ip[$i][0]." - ".$ip[$i][1]."\n";
                       }


НО МНЕ НУЖНО, ЧТОБЫ КОНЕЧНЫЙ РЕЗУЛЬТАТ БЫЛ ТАКИМ:

1.1.1.1 - 3
1.1.1.1 - 270
1.1.1.1 - 363
1.1.2.1 - 222
1.1.3.1 - 201
10.1.1.1 - 567
10.1.3.1 - 567
2.2.2.2 - 645
2.2.2.2 - 892
2.2.2.2 - 4567
3.3.3.3 - 743
4.4.4.4 - 53
5.5.5.5 - 48
5.5.5.5 - 555
7.7.7.7 - 1234


Т.Е. ЧТОБЫ СОРТИРОВКА ПО ВТОРОМУ СТОЛБЦУ ВЫПОЛНЯЛАСЬ ПО ГРУППАМ ПОВТОРЯЮЩИХСЯ IP АДРЕСОВ ПЕРВОГО СТОЛБЦА И НЕ ПЕРЕМЕШИВАЛА ЭТИ IP.
PM MAIL   Вверх
alezzz
Дата 22.12.2010, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

Репутация: 1
Всего: 14



Попробуйте сначала сделать time sort а потом ip sort.
PM MAIL   Вверх
loginn
  Дата 22.12.2010, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ха, получилось что хотел. Спасибо Вам большое.

Но почему, если вначале сделать по IP, а потом по времени - то IP начинают смешиваться? 
Потому что значения времени уникальны, а некоторые IP повторяются, поэтому? 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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