perl | Clasificación de arrays

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:

  1. Uso de valores ASCII para ordenar un Array
  2. Uso de la función de comparación (cmp)
  3. Orden alfabético de clasificación (sin distinción entre mayúsculas y minúsculas)
  4. Clasificación de una array de números
Uso de valores ASCII para ordenar un Array

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;
Producción:

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.

Uso de la función de comparación (cmp)

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";
Producción:

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’.

Orden alfabético de clasificación (sin distinción entre mayúsculas y minúsculas)

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";
Producció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

Clasificación de una array de números

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";
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *