Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » perl сортировка массива

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
 
подскажите почему не получается отсортировать массив такого вида?
$VAR1 = [
          '5    1000000000    1    1',
          '5    100000000    1    1',
          '5    1000000000    1    1',
          '5    1000000000    1    1',
          '10    1000000    1    1',
          '7    1000000000    1    1',
          '8    100000    1    1',
          '1    1000000000    1    1',
          '8    1000000000    1    1',
          '9    1000    1    1',
          '9    1000000000    1    1',
          '5    1000000000    1    1',
          '5    1000000000    1    1',
          '5    1000000000    1    1'
        ];
 
print Dumper(@array_sort);
@array_sort = sort @array_sort;
print Dumper(@array_sort);
 
что до сортировки что после сортировки результат одинаковый.
заранее благодарен
 
ПС нужно привести к такому виду
$VAR1 = [
          '1    1000000000    1    1',
          '5    1000000000    1    1',
          '5    100000000    1    1',
          '5    1000000000    1    1',
          '5    1000000000    1    1',
          '5    1000000000    1    1',
          '5    1000000000    1    1',
          '5    1000000000    1    1',
          '7    1000000000    1    1',
          '8    100000    1    1',
          '8    1000000000    1    1',
          '9    1000000000    1    1',
          '9    1000    1    1',
          '10    1000000    1    1',
        ];

Всего записей: 1499 | Зарегистр. 07-09-2004 | Отправлено: 15:19 19-11-2024 | Исправлено: tolyn77, 17:28 19-11-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tolyn77

Цитата:
что до сортировки что после сортировки результат одинаковый.
 

потому что вы массив определяете в квадратных скобках? тогда это не массив, а ссылка на него.
массив это @arr = (1, 2, 3);
 

Цитата:
ПС нужно привести к такому виду
 

обычная сортировка не подойдет, так как она будет сортировать строки, а там будет сначала идти 1, а потом сразу 10.

Код:
use Data::Dumper;
 
@array_sort = (
          '5    1000000000    1    1',
          '5    100000000    1    1',
          '5    1000000000    1    1',
          '5    1000000000    1    1',
          '10    1000000    1    1',
          '7    1000000000    1    1',
          '8    100000    1    1',
          '1    1000000000    1    1',
          '8    1000000000    1    1',
          '9    1000    1    1',
          '9    1000000000    1    1',
          '5    1000000000    1    1',
          '5    1000000000    1    1',
          '5    1000000000    1    1'
        );  
@array_sort = sort {
    my ($a1, $a2) = split /\s+/, $a;
    my ($b1, $b2) = split /\s+/, $b;
    $a1 <=> $b1
} @array_sort;
print Dumper(@array_sort);

 

Цитата:
ПС нужно привести к такому виду

именно так не получится, потому что сортировка по второму столбцу не даст такой порядок для одинакового первого.

Всего записей: 15581 | Зарегистр. 20-09-2014 | Отправлено: 20:26 19-11-2024 | Исправлено: Mavrikii, 20:48 19-11-2024
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » perl сортировка массива


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru