ORDENAsecuencia
(ORDENAsecuencia
predicado
) SORTsecuencia
(SORTsecuencia
predicado
)
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 (
es FALSO y predicado
A B)(
es CIERTO.
predicado
B A)
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 tipo | devuelto |
---|---|
Una lista de números | Una lista ordenado por MENOR? |
Una lista de no números | Una lista ordenado por ANTERIOR? |
Un vector de números | Un vector ordenado por MENOR? |
Un vector de no números | Un vector ordenado por ANTERIOR? |
Una palabra | Una palabra cuyos caracteres son ordenado por ANTERIOR? |
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]]