Está en la página 1de 9

1

Cuadro Comparativo Algoritmos de Ordenamiento

Facultad de Ingeniería, Ingeniería de Sistemas


Briyid Catalina Cruz Ostos (20202020037)
Sergio David Bohada Vargas (20191020033)
David Alexander Molina Diaz (20202020084)
020-81: Ciencias de la Computación I
Mag. Simar Enrique Herrera Jiménez
26 de febrero de 2023
2

Algoritmos de Ordenamiento
En computación y matemáticas un algoritmo de ordenamiento 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 son el orden numérico y el orden lexicográfico.
Ordenamientos eficientes son importantes 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. También es útil para poner datos en forma canónica y para generar
resultados legibles por humanos (Wikipedia, 2022).
• Ordenamiento Burbuja (Bubble Sort): Este ordenamiento funciona
comparando cada elemento del vector con el elemento que viene a
continuación, si este está mal ordenado los cambia de posición (Koketxt,
2023).

• Ordenamiento Quicksort: Es un algoritmo basado en el principio “divide y


vencerás”. Es una de los algoritmos más rápidos conocidos para ordenar. Este
método es recursivo, aunque existen versiones con formas iterativas que lo hacen
aún más rápido (TutosPoo, 2023). Su funcionamiento es de la siguiente manera:

1. Se elige un número del vector como referencia, al que se le llamará “pivote”.


2. Se elige un número del vector como referencia, al que se le llamará “pivote”.
3. Se hace uso de la recursividad para ordenar tanto el conjunto de la izquierda
como el de la derecha.

• Ordenamiento por Mezcla (Merge Sort): El algoritmo de ordenamiento por


mezcla es un algoritmo de ordenamiento externo estable basado en la
técnica divide y vencerás (Wikipedia, 2022). Conceptualmente, el
ordenamiento por mezcla funciona de la siguiente manera:

1. Si la longitud de la lista es 0 o 1, entonces ya está ordenada. En otro caso:


2. Dividir la lista desordenada en dos sublistas de aproximadamente la mitad
del tamaño.
3. Ordenar cada sublista recursivamente aplicando el ordenamiento por
mezcla.
4. Mezclar las dos sublistas en una sola lista ordenada.

• Ordenamiento por Selección (Selection Sort): Su funcionamiento es el


siguiente (Wikipedia, 2022):

1. Buscar el mínimo elemento de la lista.


2. Intercambiarlo con el primero.
3

3. Buscar el siguiente mínimo en el resto de la lista.


4. Intercambiarlo con el segundo. Y en general:
5. Buscar el mínimo elemento entre una posición i y el final de la lista.
6. Intercambiar el mínimo con el elemento de la posición i.

Complejidad Computacional
Para considerar la complejidad de un algoritmo se evalúa su rendimiento bajo los
siguientes escenarios: peor caso, caso promedio y mejor caso). En términos de n,
el tamaño de la lista o arreglo. Para esto se usa el concepto de orden de una función
y se usa la notación O(n). El mejor comportamiento para ordenar (si no se
aprovecha la estructura de las claves) es O(n log n). Los algoritmos más simples
son cuadráticos, es decir O(n²).
Tabla 1. Complejidad de algunos algoritmos de ordenamiento. Tomado y adaptado
de Wikipedia.
Nombre Nombre Complejidad Uso de Método de
Traducido Original Memoria Ordenamiento
Ordenamiento Bubblesort O(n²) O(1) Intercambio
de Burbuja
Ordenamiento Selection O(n²) O(1) Selección
por Selección Sort
Ordenamiento Merge Sort O(n log n) O(n) Mezcle
por Mezcla
Ordenamiento Quicksort Promedio: O(n log n), O(log n) Partición
Rápido Peor caso: O(n²)

Con base en la información anterior se expondrá la complejidad computacional de


los algoritmos presentados, considerando el tiempo en milisegundos de respuesta,
y la cantidad de comparaciones e intercambios realizados en tiempo de ejecución
hallados experimentalmente.
Tabla 2. Complejidad computacional hallada experimentalmente considerando el
tiempo de respuesta y la cantidad de comparaciones e intercambios realizados en
tiempo de ejecución. Fuente: Elaboración propia.
Algoritmo de Datos Tiempo de Comparaciones Intercambios
Ordenamiento Ordenados Respuesta Realizadas Realizados
(Unidad) (ms) (Unidad) (Unidad)
100 23 9900 2489
Bubblesort 1000 126 999000 180977
10000 1804 99990000 4491555
100 31 551 199
Merge Sort 1000 69 8698 1999
4

10000 1551 120402 19999


100 100 99 157
Quicksort 1000 81 999 2340
10000 273 9999 31312
100 75 99 2491
Selection Sort 1000 188 999 243700
10000 539 9999 23973777

A continuación, se presentan los diagramas que permiten visualizar el tiempo de


respuesta y el número de comparaciones e intercambios realizados por cada
algoritmo de ordenamiento con 100 datos.
Figura 01. Tiempo de respuesta por cada algoritmo con 100 datos ingresados.
Fuente: Elaboración propia (Python versión 3.8.3)

Figura 02. Número de comparaciones por cada algoritmo con 100 datos ingresados.
Fuente: Elaboración propia (Python versión 3.8.3).
5

Figura 03. Número de intercambios realizados por cada algoritmo con 100 datos
ingresados. Fuente: Elaboración propia (Python versión 3.8.3).

Seguidamente, se exponen los diagramas que permiten visualizar el tiempo de


respuesta y el número de comparaciones e intercambios realizados por cada
algoritmo de ordenamiento con 1000 datos.
Figura 04. Tiempo de respuesta por cada algoritmo con 1000 datos ingresados.
Fuente: Elaboración propia (Python versión 3.8.3)

Figura 05. Número de comparaciones por cada algoritmo con 1000 datos
ingresados. Fuente: Elaboración propia (Python versión 3.8.3).
6

Figura 06. Número de intercambios por cada algoritmo con 1000 datos ingresados.
Fuente: Elaboración propia (Python versión 3.8.3)

Finalmente, se ilustrarán los diagramas que permiten visualizar el tiempo de


respuesta y el número de comparaciones e intercambios realizados por cada
algoritmo de ordenamiento con 10000 datos.
Figura 07. Tiempo de respuesta por cada algoritmo con 10000 datos ingresados.
Fuente: Elaboración propia (Python versión 3.8.3)
7

Figura 08. Número de comparaciones por cada algoritmo con 10000 datos
ingresados. Fuente: Elaboración propia (Python versión 3.8.3).

Figura 09. Número de intercambios por cada algoritmo con 10000 datos ingresados.
Fuente: Elaboración propia (Python versión 3.8.3)
8

Conclusiones
• Para que un algoritmo de ordenación sea el más rápido para cualquier
conjunto de datos a ordenar, debe ser consciente tanto de la jerarquía de
memoria de la máquina, como del tipo, cantidad y características de los datos
a ordenar.
• La velocidad en el tiempo de respuesta (ordenamiento de los datos
ingresados) suele ser menor si el algoritmo empleado hace uso de
recursividad, de manera especifica para la comparación realizada en el
presente documento el algoritmo más eficiente para el ordenamiento de los
datos ingresados fue Quicksort.
• Los algoritmos de ordenamiento de datos son muy útiles, ya que la forma de
arreglar los registros de una tabla en algún orden secuencial de acuerdo a
un criterio de ordenamiento; facilita las búsquedas de cantidades de datos en
un moderado tiempo, en un modelo de eficiencia.

Bibliografía

Koketxt. Algoritmos de Ordenamiento. Recuperado el 26 de febrero de:


https://koketxt.wordpress.com/unidad-i/algoritmos-de-ordenamient/
Tutospoo. Ordenación Rápida (Quicksort). Recuperado el 26 de febrero de:
https://tutospoo.jimdofree.com/tutoriales-java/m%C3%A9todos-de-
ordenaci%C3%B3n/ordenaci%C3%B3n-r%C3%A1pida-quicksort/
9

Wikipedia. (2022). Algoritmo de Ordenamiento. Recuperado el 26 de febrero de:


https://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento
Wikipedia. (2022). Ordenamiento por Mezcla. Recuperado el 26 de febrero de:
https://es.wikipedia.org/wiki/Ordenamiento_por_mezcla
Wikipedia. (2022). Ordenamiento por Selección. Recuperado el 26 de febrero de:
https://es.wikipedia.org/wiki/Ordenamiento_por_selecci%C3%B3n

También podría gustarte