Necesito ordenar el siguiente hash de horas->precio:
(el ingreso es 1->precio, 2->precio, 3->precio y así sucesivamente pero al imprimir el hash sale en el orden mostrado.
Curioseando en el foro me fui hacia un articulo que Uds. recomendaron y escribí esto:
Using perl Syntax Highlighting
- foreach my $hora( sort ordenar_por_valor keys %precio) {
- my $valor = $precio{$hora};
- print "$hora => $valor\n";
- }
- sub ordenar_por_valor {
- return $precio{$a} <=> $precio{$b};
- }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
el cual nos da el siguiente resultado:
Como podrán ver, la hora (1,2,3,4,5,24) tienen el precio menor y las horas (19, 20, 21 y 22) tienen el precio mayor.
A mi solo me interesa el precio menor y el mayor pero con la primera hora con que apareció algo así:
%precio [
1 = > 140.65300329,
2 = > 140.65300329,
3 = > 140.65300329,
4 = > 140.65300329,
5 = > 140.65300329,
24 = > 140.65300329,
.
.
.
.
19 = > 167.96513356
20 = > 167.96513356
21 = > 167.96513356
22 = > 167.96513356
]
simplemente es coincidencia que el precio menor haya quedado en las primeras horas y el mayor en las últimas, podría haber sucedido en cualquier hora del día pero lo que me interesa es que se ordenen primeramente por el precio y luego por su llave.
¿Tengo el enfoque correcto o sería mejor meterlo en un arreglo y hacer el proceso "burbuja" para ordenar? ¿Ideas?
Gracias por adelantado.