Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Perl (http://www.flasher.ru/forum/forumdisplay.php?f=21)
-   -   сортировка хэша (http://www.flasher.ru/forum/showthread.php?t=45443)

soper 30.05.2003 21:55

сортировка хэша
 
значения моего хэша есть цифры, мне нужно отсортировать их и вывести на экран (или куда ещё там) значения по возрастанию. Я воспользовался функцией sort в цыкле, но значения хэша сортируются как набор строк, т.е. выводим
1,22,5,9 (по первым "буквам" строк), помогите!!

Crazy 31.05.2003 14:10

Если они сортируются как строки -- значит, они и есть строки. Сделай их числами. :)

Исходник, опять же, показывай. :)

soper 31.05.2003 15:54

ну да я об этом и говорю что они строки, но формировал то я их с помощью

for(@data){
$hash{$_}++;
}

т.е. в хешь заносились явно числа, ведь строки же не могут увеличиться оператором ++
дак как их сделать числами?
Я пытался по старинке методом пузырька, но по хешу циклы
с заданной позиции гонять не очень удобно, подскажите плизз..

Crazy 31.05.2003 23:11

Покажи полный код.

soper 31.05.2003 23:54

код следующий: хеш формируется как было указано ранее, а родительский масив содержит всякую дребедень из файла, которую нужно перечесть, сложить в кэш и упорядочить её вывод

%hash=('a',1,'b',44,'c',3,'d',4,'e',5,'f',6);
for $y(sort values %hash){

while(($k,$v)=each %hash){
if($y eq $v){print $k."- $v\n";}
}

}

Crazy 01.06.2003 04:43

sort { $a <=> $b } values %hash

Ты использовал ту форму sort, которая сортирует значения как строки. :)

soper 01.06.2003 08:34

спасибо, всё заработало, УРА!!!


Часовой пояс GMT +4, время: 00:02.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.