Perl tiene una función sort() incorporada para ordenar una array de alfabetos y números. Cuando se pasa una array a la función sort(), devuelve una array ordenada.
Sintaxis: ordenar @Array
Devoluciones: una array ordenada
La clasificación de arrays en Perl se puede realizar de varias formas:
- Uso de valores ASCII para ordenar un Array
- Uso de la función de comparación (cmp)
- Orden alfabético de clasificación (sin distinción entre mayúsculas y minúsculas)
- Clasificación de una array de números
Como los valores ASCII de las letras mayúsculas son menores que los de las letras minúsculas, todos los valores con mayúsculas se organizan antes de que comiencen los valores en minúsculas.
Ejemplo:
#!/usr/bin/perl # Initializing an array @country = ('India', 'America', 'london', 'france', 'bangladesh'); # Printing sorted array print sort @country;
AmericaIndiabangladeshfrancelondon
Así es como funciona el programa anterior:
Paso 1 : como los valores ASCII de la letra mayúscula (A a partir de 65) son menores que las letras minúsculas (a a partir de 97), todas las palabras con letras mayúsculas se organizan antes de la letra minúscula. palabras.
Paso 2 : en el ejemplo anterior, la array tiene el nombre de los países en los que algunas palabras comienzan con mayúsculas mientras que otras comienzan con minúsculas, por lo que todos los valores con mayúsculas se ordenan antes de ordenar los valores con minúsculas.
En este tipo de técnica de clasificación, el iterador recorre cada dos elementos de la array original. Con cada iteración, coloca el primer valor en la variable $a y el segundo valor en la variable $b. Ahora, se llama a la función cmp y estos valores se pasan en forma de bloque. Ahora, esta función devolverá -1 si el contenido de $a debe mantenerse a la izquierda, mientras que devuelve 1 si el contenido de $b debe estar a la izquierda.
Esta función se puede utilizar para ordenar el Array en orden descendente. La función sort() por defecto usa cmp() pero sin el uso de block.
Ejemplo:
#!/usr/bin/perl # Initializing an array @fruits = ('chikoo', 'apple', 'banana', 'orange', 'grapes'); # Sorting array in ascending order @x = sort { $a cmp $b } @fruits; # Sorting array in descending order @y = sort { $b cmp $a } @fruits; # Printing sorted array print "Array in ascending order: @x\n"; # Printing sorted array print "Array in descending order: @y";
Array in ascending order: apple banana chikoo grapes orange Array in descending order: orange grapes chikoo banana apple
Así es como funciona el programa anterior:
Paso 1- Se inicializa una array con el nombre de frutas
Paso 2- Obtiene los valores de la izquierda en $a y de la derecha en $b y compara estos dos valores usando la función cmp. Entonces, en el ejemplo anterior, ‘Grapes’ se compara con ‘chikoo’.
Para ordenar una array que contiene valores que están tanto en mayúsculas como en minúsculas, estos valores deben convertirse a mayúsculas o minúsculas para fines de comparación. Además, la función cmp() se utilizará para ordenar la array.
Nota: Los valores originales de la array no se modificarán.
Ejemplo:
#!/usr/bin/perl # Initializing an array @fruits = ('Chikoo', 'Apple', 'banana', 'orange', 'Grapes'); # Converting values to lower case for # comparison before sorting @x = sort { lc($a) cmp lc($b) } @fruits; # Converting values to upper case for # comparison before sorting @y = sort { uc($a) cmp uc($b) } @fruits; # Printing sorted array print "Array after converting to lower case: @x\n"; # Printing sorted array print "Array after converting to upper case: @y\n";
Array after converting to lower case: Apple banana Chikoo Grapes orange Array after converting to upper case: Apple banana Chikoo Grapes orange
Así es como funciona el programa anterior:
Paso 1- Inicializar una array con valores.
Paso 2 : convertir los valores a minúsculas y mayúsculas uno por uno, independientemente de su caso original, seguido de una comparación utilizando la función cmp y ordenarlos en orden ascendente.
Nota: se puede ver que no hay diferencia en la salida en ambos casos
Si una array que contiene un número se ordena mediante la función de ordenación, toma todos los valores de la array como una string, por lo que 12 se colocará antes que 2. Por lo tanto, para considerar los valores como un número, se usa spaceship operator() en lugar de cmp en la ordenación. función. Este operador considera sus operandos como un número y ordena los datos como un número.
#!/usr/bin/perl # Initializing an array @n = (12, 44, 2, 5, 25, 7, 96, 1); # Printing Original Array print "Original Array: @n\n"; # Sorting numbers with use of # spaceship operator @x = sort { $a <=> $b } @n; # Printing sorted array print "Array after Sorting: @x";
Original Array: 12 44 2 5 25 7 96 1 Array after Sorting: 1 2 5 7 12 25 44 96
Así es como funciona el programa anterior:
Paso 1- Inicializar una array con valores numéricos.
Paso 2 : usar el operador de la nave espacial para considerar los valores como números y devolver 1, 0, -1 dependiendo de los valores en $a y $b.
Publicación traducida automáticamente
Artículo escrito por rupanisweety y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA