ORDENA

Sinopsis
ORDENA secuencia
(ORDENA secuencia predicado)
SORT secuencia
(SORT secuencia predicado)
Descripción

Ordena una secuencia (lista, vector o palabra) en orden ascendente o según un predicado dado. ORDENA devuelve una secuencia nueva del mismo tipo de secuencia que contiene los mismos miembros ordenados de manera que no hay dos elementos sucesivos, A y B, donde (predicado A B) es FALSO y (predicado B A) es CIERTO.

El argumento predicado debe ser el nombre de un procedimiento o una plantilla. El predicado debe tomar dos argumentos y devuelve o CIERTO o FALSO.

Si el argumento predicado no es dado, entonces, el predicado usado depende del argumento secuencia, de acuerdo con la tabla siguiente.

secuencia tipodevuelto
Una lista de númerosUna lista ordenado por MENOR?
Una lista de no númerosUna lista ordenado por ANTERIOR?
Un vector de númerosUn vector ordenado por MENOR?
Un vector de no númerosUn vector ordenado por ANTERIOR?
Una palabraUna palabra cuyos caracteres son ordenado por ANTERIOR?

Ejemplo

Ordenando en orden ascendente:

MUESTRA ORDENA [3 1 2]
[1 2 3]

Ordenando en orden descendente:

MUESTRA (ORDENA [3 1 2] "MAYOR?)
[3 2 1]

Ordenando registros complejos:

;      [nombre años altura]
HAZ "a [Ana     12  52]
HAZ "b [Barto   11  54]
HAZ "c [Clara   12  57]
HAZ "d [Diego   12  52]
HAZ "e [Ernesto 11  54]
HAZ "datos (LISTA :e :d :c :b :a)

; Ordena por altura.
MUESTRA (ORDENA :datos [MENOR? ULTIMO ?1 ULTIMO ?2])
[[Diego 12 52] [Ana 12 52] [Ernesto 11 54] [Barto 11 54] [Clara 12 57]]

; Ordena por altura con empates ordenado por nombre.
MUESTRA (ORDENA (ORDENA :datos [ANTERIOR? PRIMERO ?1 PRIMERO ?2]) [MENOR? ULTIMO ?1 ULTIMO ?2])
[[Ana 12 52] [Diego 12 52] [Barto 11 54] [Ernesto 11 54] [Clara 12 57]]


SourceForge.net Logo