2. Introducción
La ordenación por inserción es una manera muy natural de ordenar para un ser
humano, y puede usarse fácilmente para ordenar por ejemplo un mazo de cartas
numeradas en forma arbitraria. La ordenación en la vida cotidiana es muy útil y se
aplica en programación en infinidades de casos, es bueno estudiarlos para reconocer
rápidamente cual usar en cada situación o problemática que el programa requiera. El
método de burbuja se da su nombre por que ordena los n elementos de forma con la
que suben por la lista los elementos durante los intercambios, como si fueran
pequeñas "burbujas".
- Alexis Credidio
(Faltan mas introducciones)
3. Contenidos
1. Conceptos preliminares ………………………………………………………………………..….
2. Ordenamiento de Datos ……………………………………………………………………………
3. ¿Cómo se sabe cuál es el mejor algoritmo? ………………………………………………
4. Concepto de ordenación ………………………………………………………………………….
5. Búsqueda de datos …………………………………………………………………………………..
6. Conclusiones …………………………………………………………………………………………….
7. Bibliografía ………………………………………………………………………………………….......
Ir
Ir
Ir
Ir
Ir
Ir
Ir
4. 1. Conceptos preliminares
1.1 Clave:
La parte de un registro por la cual se
ordena la lista. Por ejemplo, una lista
de registros con campos nombre,
dirección y teléfono se puede ordenar
alfabéticamente de acuerdo a la clave
nombre. En este caso los campos
dirección y teléfono no se toman en
cuenta en el ordenamiento.
(2020). Retrieved 29 June 2020, from KESQUIVEL
5. 1.2 Criterio de ordenamiento ó de comparación
EL criterio que utilizamos para
asignar valores a los registros con
base en una o más claves. De esta
manera decidimos si un registro es
mayor o menor que otro.
(2020). Retrieved 29 June 2020, from KESQUIVEL
6. 1.3 Registro
Un grupo de datos que forman la
lista. Pueden ser datos atómicos
(enteros, caracteres, reales, etc.) o
grupos de ellos, que en C equivalen a
las estructuras.
(2020). Retrieved 29 June 2020, from KESQUIVEL
7. 2. Ordenamiento de Datos
Por lo general, todos los algoritmos de
ordenación funcionan de una forma similar.
Toman una lista de elementos, en nuestro
caso un array, comparan sus elementos
siguiendo una estrategia definida y, según el
resultado de dicha comparación, mueven los
datos de un lugar a otro hasta conseguir una
lista (array) final ordenado. La ordenación o
clasificación de datos (sort, en inglés) es una
operación consistente en disponer un
conjunto de datos en algún determinado
orden con respecto a uno de los campos de
elementos del conjunto
(2020). Retrieved 29 June 2020, from KESQUIVEL
8. 3. Cómo se sabe cuál es el mejor algoritmo
Cada algoritmo se comporta de modo diferente de acuerdo a la cantidad y la
forma en que se le presenten los datos, entre otras cosas. Debes conocer a
fondo el problema que quieres resolver, y aplicar el más adecuado. Aunque hay
algunas preguntas que te pueden ayudar a elegir.
(2020). Retrieved 29 June 2020, from KESQUIVEL
9. 3.1 ¿Qué grado de orden tendrá la información que vas a manejar?
Si la información va a estar casi ordenada y no quieres complicarte, un
algoritmo sencillo como el ordenamiento burbuja será suficiente. Si por el
contrario los datos van a estar muy desordenados, un algoritmo poderoso
como Quicksort puede ser el más indicado. Y si no puedes hacer una
presunción sobre el grado de orden de la información, lo mejor será elegir un
algoritmo que se comporte de manera similar en cualquiera de estos dos casos
extremos.
BURBUJA QUICKSORT
(2020). Retrieved 29 June 2020, from KESQUIVEL
10. 3.2 ¿Qué cantidad de datos vas a manipular
Tipo de datos Uso Tamaño
Texto corto (anteriormente
conocido como "Texto")
Datos alfanuméricos (nombres,
títulos, etc.)
Hasta 255 caracteres.
Texto largo (anteriormente
conocido como "Memo")
Grandes cantidades de datos
alfanuméricos: oraciones y párrafos.
Hasta 1 gigabyte (GB)
aproximadamente.
Número Datos numéricos. 1, 2, 4, 8 o 16 bytes.
Número grande Datos numéricos. 8 bytes.
Fecha y hora Fechas y horas. 8 bytes.
Moneda
Datos monetarios, almacenados con 4
posiciones decimales de precisión.
8 bytes.
Hipervínculo Una dirección de vínculo a un
documento o archivo en Internet.
Hasta 8192 (cada parte de un tipo
de datos Hipervínculo puede
contener un máximo de 2048
caracteres).
11. 3.3 ¿Qué tipos de datos quieres ordenar?
Algunos algoritmos sólo funcionan con un tipo específico de datos (enteros,
enteros positivos, etc.) y otros son generales, es decir, aplicables a cualquier
tipo de dato..
Algunos algoritmos realizan múltiples intercambios (burbuja, inserción). Si los
registros son de gran tamaño estos intercambios son más lentos.
3.4 ¿Qué tamaño tienen los registros de tu lista?
Algoritmos de ordenamiento. Cap�tulo introduccion. (2020). Retrieved 29 June 2020, from CONCLASE
12. 4. Concepto de ordenación
“Es un algoritmo que pone elementos de una lista o un vector en una secuencia dada
por una relación de orden, es decir, el resultado de salida ha de ser una permutación o
reordenamiento de la entrada que satisfaga la relación de orden dada”.
Las relaciones de orden más usadas:
Orden numérico
Orden lexicográfico
Se utilizan para:
optimizar el uso de otros algoritmos (como los de búsqueda y
fusión) que requieren listas ordenadas para una ejecución
rápida.
poner datos en forma canónica y para generar resultados
legibles por humanos
Orden
lexicográfico
Algoritmo de ordenamiento. (2020). Retrieved 29 June 2020, from WIKIPEDIA
13. 4. Concepto de ordenación
Los algoritmos de ordenamiento se pueden clasificar en las siguientes maneras:
Según el lugar donde se realice la ordenación
Algoritmos de ordenamiento interno: en la memoria del ordenador.
Algoritmos de ordenamiento externo: en un lugar externo como un disco
duro.
Por el tiempo que tardan en realizar la ordenación
Algoritmos de ordenación natural: Tarda lo mínimo posible cuando la entrada
está ordenada.
Algoritmos de ordenación no natural: Tarda lo mínimo posible cuando la
entrada está inversamente ordenada.
Por estabilidad: un ordenamiento estable mantiene el orden relativo que
tenían originalmente los elementos con claves iguales
Algoritmo de ordenamiento. (2020). Retrieved 29 June 2020, from WIKIPEDIA
14. 4.1 Algoritmo de ordenación básicos
MÉTODOS DE ORDENAMIENTOS BÁSICOS
Ordenamiento por intercambio
Ordenamiento por selección
Ordenamiento por inserción
15. El método de intercambio se basa en comparar los elementos del arreglo e
intercambiarlos si su posición actual o inicial es contraria inversa a la deseada.
4.2 Ordenación por intercambio
BURBUJA
“Buble sort o ordenamiento por burbujeo”
Este es el método de ordenación más popular,
que resulta ser al mismo tiempo el más lento e
ineficaz.
QUICK SORT
“Ordenamiento rápido”
Este es un método rápido, más sofisticado en
su ejecución por la complejidad de las
operaciones a realizar, pero mucho más
eficiente en cuanto a tiempo de ejecución.
porras, e. (2012). Métodos de ordenamiento por intercambio. Retrieved 29 June 2020, from WIKIPEDIA
16. 4.3 Ordenación por selección
Consiste en encontrar el menor de todos los elementos del arreglo o vector e
intercambiarlo con el que está en la primera posición. Luego el segundo más
pequeño, y así sucesivamente hasta ordenarlo todo.
Su implementación requiere O(n2) comparaciones e intercambios para ordenar
una secuencia de elementos.
VENTAJAS DESVENTAJAS
• Es fácil su implementación.
• No requiere memoria adicional.
• Realiza pocos intercambios.
• Tiene un rendimiento constante, pues
existe poca diferencia entre el peor y el
mejor caso.
• Es lento
• poco eficiente cuando se usa en listas
grandes o medianas.
• Realiza numerosas comparaciones.
Algoritmo de ordenamiento por selección - EcuRed. (2020). Retrieved 29 June 2020, from ECURED
17. 4.4 Ordenación por inserción
• Algoritmo que ordena una lista
de n elementos.
• cuando hay k elementos ordenados el
compara los elementos detenidamente,
deteniéndose cuando hay un número
menor a otro.
EJEMPLO
1 2 3 4 5
Ordenamiento por inserción. (2020). Retrieved 29 June 2020, from WIKIPEDIA
18. 4.4.1 Análisis del ordenamiento por el método de inserción
El ordenamiento por inserción, aunque
sigue siendo O(n2), funciona de una
manera ligeramente diferente. Siempre
mantiene una sublista ordenada en las
posiciones inferiores de la lista.
5.9. El ordenamiento por inserción — Solución de problemas con algoritmos y estructuras
de datos. (2020). Retrieved 29 June 2020, from RUNESTONE ACADEMY
20. 4.4.2 Ventajas y desventajas
VENTAJAS DESVENTAJAS
• Simplicidad.
• Buen rendimiento en una pequeña
lista.
• Fácil implementación.
• No requiere memoria adicional
• Muy lento en largas listas.
• Muchas comparaciones.
• Muchos intercambios.
21. 4.5 Ordenación por burbuja (bubble sort)
Es un sencillo algoritmo de
ordenamiento que funciona revisando
cada elemento de la lista que va a ser
ordenada con el siguiente,
intercambiándolos de posición si están
en el orden equivocado.
1 2 3 4 5
Ordenamiento de burbuja. (2020). Retrieved 29 June 2020, from: WIKIPEDIA
22. 4.5.1 Análisis del algoritmo de la burbuja
1. El ordenamiento burbuja hace
múltiples pasadas a lo largo de una
lista.
2. Compara los ítems adyacentes e
intercambia los que no están en
orden.
3. Cada pasada a lo largo de la lista
ubica el siguiente valor más
grande en su lugar apropiado.
En esencia, cada ítem “burbujea”
hasta el lugar al que pertenece.
23. Ejemplo en C++
Video completo
Explicación
gráfica del
funcionamient
o del algoritmo
de burbuja en
DEV C++.
24. 4.5.2 Ventajas y desventajas
VENTAJAS DESVENTAJAS
• bastante sencillo y más utilizado por
su fácil comprensión y
programación.
• Código de reducido.
• Eficaz
• Consume bastante tiempo de
computadora.
• Requiere de muchas lecturas/
escrituras en memoria.
25. 4.6 Ordenación Shell
• El método se denomina Shell en honor
de su inventor Donald Shell.
• El SHELL SORT es una generalización
del ordenamiento por inserción, solo
que este mueve elementos al mismo
tiempo.
Ordenamiento Shell. (2020). Retrieved 29 June 2020, from WIKIPEDIA
26. 4.7 Ordenación rápida (quicksort):
El ordenamiento rápido (quicksort en inglés) es un
algoritmo de ordenación creado por el científico
británico en computación C. A. R. Hoare.
Quicksort en acción sobre una lista de
números aleatorios. Las líneas
horizontales son valores pivote.
El ordenamiento rápido se
caracteriza por utilizar “divide y
vencerás”.
Quicksort. (2020). Retrieved 28 June 2020, from WIKIPEDIA
28. 4.7.1 Pasos que sigue el algoritmo QUICKSORT
1. Elegir un elemento del conjunto de elementos a ordenar, al que llamaremos pivote.
2. Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden
todos los menores que él, y al otro los mayores. Los elementos iguales al pivote pueden ser
colocados tanto a su derecha como a su izquierda, dependiendo de la implementación deseada. En
este momento, el pivote ocupa exactamente el lugar que le corresponderá en la lista ordenada.
3. La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y
otra por los elementos a su derecha.
4. Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un
elemento. Una vez terminado este proceso todos los elementos estarán ordenados.
Algoritmos de ordenamiento. Capítulo quicksort. (2020). Retrieved 28 June 2020, from CONCLASE
29. 4.7.2 Análisis del algoritmo QUICKSORT
Estabilidad: No es estable.
Requerimientos de Memoria: No requiere memoria adicional en
su forma recursiva. En su forma iterativa la necesita para la pila.
Eficiencia: La eficiencia del algoritmo depende de la posición en
la que termine el pivote elegido.
Algoritmos de ordenamiento. Capítulo quicksort. (2020). Retrieved 28 June 2020, from conclase
30. A. Caso promedio: La complejidad para dividir una lista de n es O(n). Cada
sublista genera en promedio dos sublistas más de largo n/2. Por lo tanto, la
complejidad se define en forma recurrente como:
f(1) = 1
f(n) = n + 2 f(n/2)
La forma cerrada de esta expresión es:
f(n) = n log2n
Es decir, la complejidad es O(n log2n).
B. El peor caso: ocurre cuando la lista ya está ordenada, porque cada llamada
genera sólo una sublista (todos los elementos son menores que el elemento de
división). En este caso el rendimiento se degrada a O(n2). Con las optimizaciones
mencionadas arriba puede evitarse este comportamiento.
Tiempo de Ejecución:
Algoritmos de ordenamiento. Capítulo quicksort. (2020). Retrieved 28 June 2020, from conclase
31. 4.7.3 Ventajas y desventajas (QUICKSORT)
VENTAJAS DESVENTAJAS
• Muy rápido.
• No requiere memoria adicional.
• Ciclo interno es extremadamente corto.
• Requiere pocos recursos en
comparación a otros métodos de
ordenación.
• Implementación un poco más
complicada.
• Recursividad (utiliza muchos recursos).
• Mucha diferencia entre el peor y el
mejor caso.
• No es útil para aplicaciones de entrada
dinámica.
Algoritmos de ordenamiento. Capítulo quicksort. (2020). Retrieved 28 June 2020, from conclase
32. 4.8 Ordenación Bin sort y Radix sort
• Definición: El ordenamiento por casilleros (bucket sort o bin sort, en inglés) es
un algoritmo de ordenamiento que distribuye todos los elementos a ordenar
entre un número finito de casilleros. Cada casillero sólo puede contener los
elementos que cumplan unas determinadas condiciones.
Ordenamiento por casilleros. (2020). Retrieved 28 June 2020, from WIKIPEDIA
Bin sort:
• El algoritmo contiene los siguientes pasos:
1. Crear una colección de casilleros vacíos
2. Colocar cada elemento a ordenar en un único casillero
3. Ordenar individualmente cada casillero
4. devolver los elementos de cada casillero concatenados por orden
33. 4.8 Ordenación Binsort y Radixsort
Ordenamiento por casilleros. (2020). Retrieved 28 June 2020, from WIKIPEDIA
Binsort Pseudocódigo:
función bucket-sort(elementos, n)
casilleros ← colección de n listas
para i = 1 hasta longitud(elementos) hacer
c ← buscar el casillero adecuado
insertar elementos[i] en casillero[c]
fin para
para i = 1 hasta n hacer
ordenar(casilleros[i])
fin para
devolver la concatenación de casilleros[1],..., casilleros[n]
Aclaración:
elementos = lista de datos a ordenar
n = número de casilleros que queremos usar.
34. 4.8 Ordenación Bin sort y Radix sort
• Definición: En informática, el ordenamiento Radix (radix sort en inglés) es
un algoritmo de ordenamiento que ordena enteros procesando sus dígitos de forma
individual. Como los enteros pueden representar cadenas de caracteres (por ejemplo,
nombres o fechas) y, especialmente, números en punto flotante especialmente
formateados, radix sort no está limitado sólo a los enteros.
Ordenamiento Radix. (2020). Retrieved 28 June 2020, from WIKIPEDIA
Radix sort:
• El algoritmo contiene los siguientes pasos:
1. Inicialización de contadores: se inician a cero.
2. Conteo: calcula un histograma de los valores del digito para las claves almacenadas
en el valor fuente S.
3. Suma parcial: se calcula la suma parcial de los contadores.
4. Movimientos: se les las claves y punteros del vector S y se escriben en el vector D.
(2020). Retrieved 28 June 2020, from UPCOMMONS
35. 4.8 Ordenación Bin sort y Radix sort
(2020). Retrieved 28 June 2020, from UPCOMMONS
Radix sort Pseudocódigo:
36. 5. Búsqueda de datos
5.1 Búsqueda secuencial:
En informática, la búsqueda
lineal o la búsqueda
secuencial es un método para
encontrar un valor objetivo
dentro de una lista. Ésta
comprueba secuencialmente
cada elemento de la lista para el
valor objetivo hasta que es
encontrado o hasta que todos
los elementos hayan sido
comparados
Búsqueda Lineal
Clase Algoritmos de búsqueda
Estructura de datos {{{datos}}}
Peor de los casos O(n)
Mejor de los casos O(1)
Caso promedio O(n)
Complejidad del peor de los casos O(1) iterativo
Búsqueda lineal. (2020). Retrieved 28 June 2020, from WIKIPEDIA
37. 5.1 Búsqueda Binaria
• La búsqueda binaria es un algoritmo eficiente para encontrar un elemento en una
lista ordenada de elementos. Funciona al dividir repetidamente a la mitad la porción
de la lista que podría contener al elemento, hasta reducir las ubicaciones posibles a
solo una.
• La búsqueda binaria sólo se puede implementar si el arreglo está ordenado. La idea
consiste en ir dividiendo el arreglo en mitades.
Búsqueda binaria (artículo) | Algoritmos | Khan Academy. (2020). Retrieved 28 June 2020, from KHAN ACADEMY
Clic en el botón para ver el video
En este video podemos ver la estructura fuente de la búsqueda binaria en C++
38. 5.1 Búsqueda Binaria
Ejemplo de búsqueda binaria:
Busqueda binaria en C++. (2020). Retrieved 28 June 2020, from CODIGOMALDITO
39. Conclusión
La programación ha ido evolucionando y centrándose en diferentes temas como por
ejemplo el de concepto preliminar que pertenece al Ordenamiento y búsqueda en C,
que esta es abarcada por 3 tipos que son los (registros, claves y criterio de
ordenamiento). Por lo general, todos los algoritmos de ordenamiento forman parte
de una lista de elementos, los cuales van siguiendo diferentes estrategias y mueven
todos los datos necesarios a diferentes lugares hasta llegar a conseguir una lista final
de ordenamiento.
Jorge Mendoza
40. Conclusión
Para estos métodos cabe destacar su buena comprensión y funcionabilidad ya que
utilizarlos de manera inadecuada, hace el algoritmo groso y lento es decir poco
eficaz. No es recomendable utilizarlos cuando el programa es demasiado extenso.
El ordenamiento de burbuja interactúa vagamente con el hardware de las CPU
modernas. Requiere al menos el doble de escrituras que el ordenamiento por
inserción, el doble de pérdidas de caché, y asintóticamente más predicción de
saltos. Varios experimentos de ordenamiento de cadenas en Java hechos por
Astrachan muestran que el ordenamiento de burbuja es 5 veces más lento que el
ordenamiento por inserción, y 40% más lento que el ordenamiento por selección.
- Alexis Credidio
41. Datos bibliográficos
Algoritmo de ordenamiento. (2020). Retrieved 29 June 2020, from
https://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento
Algoritmo de ordenamiento por selección - EcuRed. (2020). Retrieved 29 June 2020, from
https://www.ecured.cu/Algoritmo_de_ordenamiento_por_selecci%C3%B3n
Cómo organizar una tabla de datos y los tipos de variables - Conceptos Claros. (2019). Retrieved 29 June
2020, from https://conceptosclaros.com/como-organizar-una-tabla-de-datos/
Algoritmos de ordenamiento. Cap�tulo introduccion. (2020). Retrieved 29 June 2020, from
http://c.conclase.net/orden/?cap=introduccion#intro
42. Datos bibliográficos
Ordenamiento de burbuja. (2020, 17 de mayo). Wikipedia, La enciclopedia libre. Fecha de consulta: 00:49,
junio 27, 2020
desde https://es.wikipedia.org/w/index.php?title=Ordenamiento_de_burbuja&oldid=126132478
Ordenamiento por inserción. (2020, 22 de junio). Wikipedia, La enciclopedia libre. Fecha de consulta:
00:50, junio 27, 2020
desde https://es.wikipedia.org/w/index.php?title=Ordenamiento_por_inserci%C3%B3n&oldid=127158202
El ordenamiento por inserción — Solución de problemas con algoritmos y estructuras de datos Website
title:Runestone.academy
https://runestone.academy/runestone/static/pythoned/SortSearch/ElOrdenamientoPorInsercion.html#:~:t
ext=El%20ordenamiento%20por%20inserci%C3%B3n%2C%20aunque,sea%20un%20%C3%ADtem%20m%C
3%A1s%20larga
Ordenamiento Shell. (2019, 8 de noviembre). Wikipedia, La enciclopedia libre. Fecha de consulta: 19:24,
junio 27, 2020 desde https://es.wikipedia.org/w/index.php?title=Ordenamiento_Shell&oldid=121175966
43. Datos bibliográficos
Quicksort. (2020). Retrieved 29 June 2020, from https://es.wikipedia.org/wiki/Quicksort
Algoritmos de ordenamiento. Cap�tulo quicksor. (2020). Retrieved 29 June 2020, from
http://c.conclase.net/orden/?cap=quicksor
(2020). Retrieved 29 June 2020, from
https://upcommons.upc.edu/bitstream/handle/2117/93297/05Djg05de14.pdf?sequence=5&isAllowed=y
Ordenamiento por casilleros. (2020). Retrieved 29 June 2020, from
https://es.wikipedia.org/wiki/Ordenamiento_por_casilleros#:~:text=El%20ordenamiento%20por%20casille
ros%20(bucket,un%20n%C3%BAmero%20finito%20de%20casilleros.&text=Se%20trata%20de%20una%20g
eneralizaci%C3%B3n%20del%20algoritmo%20Pigeonhole%20sort
Ordenamiento Radix. (2020). Retrieved 29 June 2020, from
https://es.wikipedia.org/wiki/Ordenamiento_Radix