Está en la página 1de 14

FUNDAMENTOS DE

PROGRAMACIÓN

Ordenamiento
ORDENAMIENTO
Una función que consume una lista de números y produce una lista que
contiene los mismos números en orden ascendente.

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 2
ORDENAMIENTO ESTRUCTURAL
function insert(n, list) { function ordenamientoEstructural(list) {
if (isEmpty(list)) { if (isEmpty(list)) {
return cons(n, []); return [];
} }
else { else {
if (n >= first(list)) { return insert(first(list),
return cons(n, list); ordenamientoEstructural (rest(list)));
} }
else { }
return cons(first(list),
insert(n, rest(list)));
}
}
}

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 3
ORDENAMIENTO GENERATIVO
La idea subyacente del paso generativo es una estrategia para resolver
problemas: Divide y vencerás

Dividimos los casos no triviales en dos más pequeños del mismo tipo.
Resolviendo esos dos problemas, y operando sus soluciones,
solucionamos el problema original.

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 4
QUICKSORT
En el caso del ordenamiento generativo, el objetivo intermedio es dividir
la lista de números en dos listas:

1. Una de ellas contiene todos los ítems estrictamente más pequeños


que el primer ítem.
2. La otra contiene todos los ítems que son estrictamente más grandes
que el primer ítem.

Después las dos listas más pequeñas son ordenadas usando el mismo
procedimiento.
Una vez que las dos listas se ordenan, simplemente se concatenan las
piezas: de la forma menor, primero, mayor.
El programa termina en su caso más trivial, este es ordenar una lista vacía.

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 5
QUICKSORT
[ 11, 8, 14, 7 ]

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 6
QUICKSORT
[ 11, 8, 14, 7 ]

El ítem primero es 11

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 7
QUICKSORT
[ 11, 8, 14, 7 ]

El ítem primero es 11

1a. [8, 7]
2a. [14]

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 8
QUICKSORT
[ 11, 8, 14, 7 ]

El ítem primero es 11

1a. [8, 7]
2a. [14]

con 1a. [ 8, 7 ] se repite la operación, El ítem primero es 8

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 9
QUICKSORT
[ 11, 8, 14, 7 ]

El ítem primero es 11

1a. [8, 7]
2a. [14]

con 1a. [ 8, 7 ] se repite la operación, El ítem primero es 8


1b. [ 7 ]
1c. [ 8 ]

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 10
QUICKSORT
[ 11, 8, 14, 7 ]

El ítem primero es 11

1a. [8, 7]
2a. [14]

con 1a. [ 8, 7 ] se repite la operación, El ítem primero es 8


1b. [ 7 ]
1c. [ 8 ]

2a. ya está ordenada OK

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 11
QUICKSORT
[ 11, 8, 14, 7 ]

El ítem primero es 11

1a. [8, 7]
2a. [14]

con 1a. [ 8, 7 ] se repite la operación, El ítem primero es 8


1b. [ 7 ]
1c. [ 8 ]

2a. ya está ordenada OK

concatenar [[ 7, 8] , 11 , [ 14] ]->[ 7,8,11,14 ]

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 12
EJERCICIO QUICKSORT
Simular los pasos de quicksort para [11, 9, 2, 18, 12, 14, 4, 1]

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 13
QUICKSORT EN JS
const {cons, first, rest, isEmpty, isList, length, append} =
require('functional-light' );

Escuela de Ingeniería de sistemas y computación


Universidad del Valle Slide 14

También podría gustarte