Función: Ordenar por ComparadorVolver

Descripción

Ordena los elementos de un vector según una relación de orden especificada

Cadena de entrada

ordcomp

Cadena de salida

ordcomp

Uso

ordcomp(<vector>,<comparador>)

Parámetros
# Parámetro Descripción Valor por defecto
1 vector Vector de datos a ordenar
2 comparador

Expresión que devuelve el valor de la comparación y depende de dos variables internas, _t1_, _t2_, que representan dos elementos a comparar.

  • Si _t1_ < _t2_ devuelve negativo,
  • Si _t1_ > _t2_ devuelve positivo,
  • Si _t1_ = _t2_ devuelve 0

Ejemplos

ordenar por tamaño del vector:

ordcomp([[1,2],[],[6,nan,-1,ui],[0,0,0,0,0,0,0],[inf]],elsif(dim(_t1_)<dim(_t2_),-1,dim(_t1_)>dim(_t2_),1,0))

VectorEvaluado: [[],[Infinity],[1,2],[6,NaN,-1,I],[0,0,0,0,0,0,0]]

ordcomp([[1,2],[],[6,nan,-1,ui],[0,0,0,0,0,0,0],[inf]],dim(_t1_)-dim(_t2_))forma más concisa

VectorEvaluado: [[],[Infinity],[1,2],[6,NaN,-1,I],[0,0,0,0,0,0,0]]

ordenar por suma del vector:

ordcomp([[100,0,-1],[1e100],[-2,0,-1,3],[2,2]],suma(_t1_)-suma(_t2_))

VectorEvaluado: [[-2,0,-1,3],[2,2],[100,0,-1],[1.0E100]]

ordenar números naturales por su suma alícuota:

ordcomp([4,6,270,32,14,35,37,12,110,0,100],alisum(_t1_)-alisum(_t2_))

VectorEvaluado: [0,37,4,6,14,35,12,32,110,100,270]

ordenar números naturales por su última cifra primero, y por su orden natural en caso de empate después, usando eval:

ordcomp(sucesion(randint(1,1000),_,1,100),eval(if(unidades1=unidades2,_t1_-_t2_,unidades1-unidades2),[unidades1,unidades2],[_t1_%10,_t2_%10]))

VectorEvaluado: [10,50,80,180,610,630,700,840,930,201,201,481,491,501,521,571,631,751,931,961,991,12,652,672,772,782,792,842,43,213,233,253,573,633,653,673,853,953,973,4,84,104,134,154,284,354,354,354,384,454,704,714,784,804,814,85,245,335,355,465,565,645,765,885,86,146,366,666,666,796,826,846,866,996,107,727,747,28,28,128,198,278,408,418,458,608,878,898,928,49,319,559,579,699,739,809,869,909,969,999]

ordenar números naturales con primos primero y compuestos después, cada grupo ordenado por orden natural:

ordcomp(shuffle(rango(101)),elsif(primo(_t1_)=primo(_t2_),_t1_-_t2_,primo(_t1_),-1,1))

VectorEvaluado: [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,0,1,4,6,8,9,10,12,14,15,16,18,20,21,22,24,25,26,27,28,30,32,33,34,35,36,38,39,40,42,44,45,46,48,49,50,51,52,54,55,56,57,58,60,62,63,64,65,66,68,69,70,72,74,75,76,77,78,80,81,82,84,85,86,87,88,90,91,92,93,94,95,96,98,99,100]

Véase también…

ordenar, revertir