Ejemplos de rebanadas de clasificación de Golang

Ejemplos De Rebanadas De Clasificacion De Golang



Ordenar es una operación de programación fundamental que incluye poner los elementos en un orden particular. El paquete de clasificación, en el que está disponible la biblioteca oficial de Go, incluye varias funciones para clasificar rápidamente las porciones. Ordenar segmentos es una tarea común en muchas aplicaciones, desde organizar los datos para su presentación hasta optimizar los algoritmos de búsqueda. Este artículo explora las diferentes técnicas de clasificación y demuestra su uso en Go usando el paquete de clasificación.

Ejemplo 1: Golang Sort Slice en orden ascendente

La función 'sort.Slice()' es la función principal en Go que reorganiza los elementos de la división en orden ascendente o descendente. Tenga en cuenta la siguiente ilustración donde la rebanada está dispuesta en orden ascendente:

paquete principal
importar (
    'fmt'
    'clasificar'
)
función principal () {
rebanada uniforme := [] En t { 10 , 2 , 8 , 4 , 0 , 6 }
fmt . Imprimir ( 'Rebanada sin clasificar:' , rebanada uniforme )
clasificar . Rebanada ( rebanada uniforme , función ( i , j En t ) bool {
      devolver rebanada uniforme [ i ] < inclusoRebanada [ j ]
    })
fmt . Imprimir ( 'Rebanada ordenada:' , rebanada uniforme )
}

Al comienzo de la función main(), definimos el segmento evenSlice con los valores {10, 2, 8, 4, 0, 6}. Este segmento representa una colección de números pares que inicialmente no están ordenados. Para ordenar el segmento evenSlice, se emplea la función sort.Slice() con el segmento. Dentro de la función sort.Slice(), se proporciona una función de clasificación como argumento. Esta función determina el orden de clasificación comparando los dos elementos de la rebanada en los índices 'i' y 'j'. Si evenSlice[i] es menor que evenSlice[j], devuelve verdadero; de lo contrario, devuelve falso. La función sort.Slice() usa esta función de comparación para reorganizar los elementos del segmento 'evenSlice' en orden ascendente.







Los resultados del segmento ordenado en orden ascendente se generan en la siguiente pantalla de salida:





Ejemplo 2: Golang Sort Part Slice

A continuación, la clasificación se aplica al subsector del segmento especificado en orden ascendente mediante la función sort.Slice() en Go.





paquete principal
importar (
    'fmt'
    'clasificar'
)
función principal () {
norte := [] En t { 9 , 7 , 3 , 5 }
comenzar := 0
fin := 3
clasificar . Rebanada ( norte [ comenzar : fin ], función ( i , j En t ) bool {
        devolver norte [ comenzar + i ] < norte [ comenzar + j ]
    })
fmt . Imprimir ( norte )
}

Inicialmente, creamos el segmento 'n' con los valores [9, 7, 3, 5]. Además, dos variables, 'inicio' y 'fin', se establecen en 0 y 3, respectivamente. Estas variables definen el rango de índices en el segmento 'n' que se ordenará. A continuación, se llama a la función 'sort.Slice()' con el subsector 'n[start:end]' como primer argumento. Este subsegmento contiene los elementos de 'n' dentro del rango especificado. Después de eso, se proporciona una función de clasificación como segundo argumento dentro de la función sort.Slice().

Aquí, esa función recibe dos índices, 'i' y 'j', que representan los elementos dentro del subsegmento. Para comparar los elementos dentro del subsegmento, la función de clasificación accede a los elementos correspondientes en el segmento original usando el inicio Compara el n[inicio+i] y el n[inicio+j]. A continuación, la función sort.Slice() utiliza la función de clasificación proporcionada para reorganizar los elementos dentro del subsegmento en orden ascendente.



El siguiente resultado muestra que los elementos dentro del rango especificado (comienzo a fin-1) están ordenados y los elementos fuera del rango permanecen sin cambios:

Ejemplo 3: Golang Sort Integer Slice usando la función Sort.Ints()

Además, lo más conveniente para ordenar los segmentos de enteros es la función sort.Ints() sin necesidad de implementar métodos de ordenación personalizados. Actúa directamente sobre segmentos enteros y realiza una clasificación en el lugar. El siguiente programa ordena los enteros especificados:

paquete principal
importar (
    'fmt'
    'clasificar'
)
función principal () {
Rebanada interna := [] En t { 10 , 13 , 15 , 11 , 14 , 12 }
fmt . Imprimir ( 'Rebanada sin clasificar:' , Rebanada interna )
clasificar . enteros ( Rebanada interna )
fmt . Imprimir ( 'Rebanada ordenada:' , Rebanada interna )
}

Primero, declaramos e inicializamos el segmento 'IntSlice' con los valores [10, 13, 15, 11, 14, 12] que representan una colección de enteros que inicialmente no están ordenados. Luego, se llama a la función sort.Ints() con el segmento 'IntSlice' como argumento para ordenar el 'IntSlice'. La función sort.Ints() en este caso clasifica internamente cada parte del segmento de acuerdo con un algoritmo de clasificación optimizado. Modifica el corte original directamente, reorganizando sus elementos en un orden ordenado.

El siguiente resultado primero muestra que el sector no ordenado se muestra primero, seguido del sector ordenado:

Ejemplo 4: Golang Sort String Slice

Go también ofrece la función sort.Strings() del paquete de clasificación que se utiliza para clasificar una porción de cadenas en un orden específico. Aquí, el siguiente programa ayuda a ordenar la porción de cadenas:

paquete principal
importar (
    'fmt'
    'clasificar'
)
función principal () {
strSl := [] cadena { 'golán' , 'pitón' , 'Java' , 'perla' , 'mecanografiado' }
clasificar . Instrumentos de cuerda ( strSl )
fmt . Imprimir ( strSl )
}

Primero establecimos el segmento 'strSl' con los valores ['golang', 'python', 'java', 'perl', 'typescript'] que no están ordenados. Después de eso, ordenamos el segmento “strSl” con la función sort.Strings() que ordena los elementos del segmento en orden lexicográfico. Esta función modifica el segmento original directamente, reorganizando sus elementos en orden según sus valores ASCII.

La salida ordena el segmento de cadena en forma ascendente como se muestra a continuación:

Ejemplo 5: Golang Check Sort Slice usando la función IntAreSort()

Sin embargo, con la función sort.IntsAreSorted() de Go, podemos comprobar si una determinada porción de enteros está ordenada en orden ascendente o no. Considere el siguiente programa de ejemplo de la función IntAreSort() para el segmento dado:

paquete principal
importar (
    'fmt'
    'clasificar'
)
función principal () {
SL := [] En t { - 33 , 105 , - 42 , 59 , 18 , 0 , - 3 }
fmt . Imprimir ( 'Rebanadas:' )
fmt . Imprimir ( 'Rebanada sin clasificar:' , SL )
resultado := clasificar . IntsAreOrdenados ( SL )
fmt . Imprimir ( ' \norte Resultado:' )
fmt . Imprimir ( '¿Está ordenado Slice?: ' , resultado )
}

Primero, una rebanada no clasificada de enteros aleatorios se define como 'sl'. Este segmento contiene una colección de enteros sin ningún orden en particular. A continuación, llamamos a la función sort.IntsAreSorted() y pasamos el segmento 'sl' como argumento. Esta función proporciona un resultado booleano que indica si la entrada del sector está organizada o no en orden ascendente. Luego, la función fmt.Println() imprime los resultados que muestran si el segmento dado está ordenado o no según el valor booleano devuelto.

La salida muestra falso para el orden de clasificación de una porción de enteros, ya que no está ordenado:

Ejemplo 6: Rebanada de clasificación inversa de Golang

Además, al usar las funciones sortReverse() y sortStringSlice() del paquete sort en Go, podemos ordenar de forma inversa una porción de cadenas. El siguiente programa demuestra el funcionamiento de la función sort.Reverse():

paquete principal
importar (
    'fmt'
    'clasificar'
)
función principal () {
rebanada de vocal := [] cadena { 'Es' , 'a' , 'i' , 'en' , 'O' }
fmt . Imprimir ( 'Antes de ordenar:' , rebanada de vocal )
clasificar . Clasificar ( clasificar . Contrarrestar ( clasificar . CuerdaRebanada ( rebanada de vocal )))
fmt . Imprimir ( 'Después de ordenar:' , rebanada de vocal )
}

Comenzamos definiendo un segmento de la cadena 'vocalSlice' que contiene las vocales 'e', 'a', 'i', 'u' y 'o'. El contenido inicial de la porción de cadenas especificada se imprime primero usando la función 'imprimir'. A continuación, la operación de clasificación se realiza utilizando la función sort.Sort() con las funciones sort.Reverse() y sort.StringSlice() como argumentos. Aquí, 'sort.Reverse()' crea un nuevo tipo que invierte el orden de los elementos. Toma el tipo 'sort.StringSlice' como su argumento que convierte el vocalSlice en un tipo ordenable.

La salida aquí muestra las vocales en orden alfabético inverso:

Conclusión

Profundizamos en varias funciones de clasificación con ejemplos que clasifican el segmento proporcionado. También cubrimos la clasificación de subsegmentos y la verificación de si un segmento ya está ordenado. Por lo tanto, podemos aprovechar las capacidades del paquete de clasificación para abordar una amplia gama de desafíos de clasificación en sus proyectos Go.