Nyx con Ejemplos

Ordenamiento

El módulo std/array provee sort_int y sort_str para ordenar in-place arrays numéricos y de strings respectivamente. Ambas funciones ordenan de forma ascendente y retornan el mismo array que mutaron.

Código

// Ordenamiento: sort_int() de std/array + bubble sort manual
import "std/array"

fn print_array(arr: Array) {
    var s: String = "["
    var i: int = 0
    while i < arr.length() {
        let v: int = arr[i]
        s = s + int_to_string(v)
        if i < arr.length() - 1 {
            s = s + ", "
        }
        i = i + 1
    }
    s = s + "]"
    print(s)
}

fn main() -> int {
    var nums: Array = [64, 25, 12, 22, 11, 90, 3, 47, 8, 55]

    print("Antes de ordenar:")
    print_array(nums)

    // sort_int ordena in-place y retorna el array
    let ordenado: Array = sort_int(nums)

    print("Despues de ordenar:")
    print_array(ordenado)

    // Otro ejemplo: strings
    var palabras: Array = ["manzana", "banana", "cereza", "aguacate"]
    print("Strings antes:")
    print_array(palabras)

    let ord_str: Array = sort_str(palabras)
    print("Strings despues:")
    print_array(ord_str)

    return 0
}

Salida

Antes de ordenar:
[64, 25, 12, 22, 11, 90, 3, 47, 8, 55]
Despues de ordenar:
[3, 8, 11, 12, 22, 25, 47, 55, 64, 90]
Strings antes:
[manzana, banana, cereza, aguacate]
Strings despues:
[aguacate, banana, cereza, manzana]

Explicación

sort_int(nums) ordena el array in-place y lo retorna, así que el valor de retorno y la variable original referencian la misma secuencia ya ordenada. Se puede usar el valor de retorno o seguir usando la variable original — ambos apuntan a los datos ya ordenados.

sort_str funciona de forma idéntica para arrays de strings, ordenando los elementos lexicográficamente (byte por byte, de forma ascendente). En el ejemplo, "aguacate" se ordena primero porque 'a' precede a 'b', 'c' y 'm'.

La función auxiliar print_array demuestra el recorrido manual de un array usando un loop while con una variable índice — el patrón estándar de Nyx cuando se necesita acceso por índice en lugar de un pipeline de iteradores.

← Anterior Siguiente →

Source: examples/by-example/34-sorting.nx