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.