Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructura de datos
Docente: Alonso López Damián
Actividad T5-02: Cuadro comparativo
Algoritmos de ordenamiento
Carrera: Ingeniería en sistemas computacionales
Estudiante: Ocampo Ramírez Danilo
Tercer semestre
Grupo: 3SA
San pedro Pochutla, OAX.
A noviembre de 2022
Introducción
Los algoritmos de ordenamiento nos permiten, como su nombre lo indica, ordenar. En este
caso, nos servirán para ordenar vectores o matrices con valores asignados aleatoriamente.
Las estructuras de datos son utilizadas para almacenar información, para poder recuperar
esa información de manera eficiente es deseable que aquella esté ordenada. Existen
varios métodos para ordenar las diferentes estructuras de datos básicas. Analizaremos los
métodos más conocidos, viendo la cantidad de comparaciones y el tiempo que demora. Esta
investigación nos dará a conocer más sobres los métodos de ordenamiento, desde uno simple
hasta el más complejo.
Métodos de ordenamiento
Ordenación interna.
Ordenar significa reagrupar o reorganizar un conjunto de datos u objetos en una secuencia
especifica, la cual puede ser de dos formas distintas:
• El método de la burbuja.
• El método Quicksort.
• El método shellsort.
Burbuja
El método de ordenación por intercambio directo o método de la burbuja, es el más simple y
consiste en comparar dos elementos adyacentes para determinar si se realiza un intercambio
entre los mismos, esto en caso de que el primero sea mayor que el segundo (forma
ascendente) o el caso de que el primero sea menor que el segundo (forma descendente).
El primer procedimiento del método de la burbuja es:
1. Generar un ciclo que inicie desde uno hasta el número de elementos del arreglo.
2. Generar un segundo ciclo dentro del anterior que inicie desde cero hasta el número
de elementos del arreglo menos dos.
3. Dentro del segundo ciclo debe existir una comparación que determina el tipo de
ordenamiento (ascendente o descendente) entre el primer elemento (posición
generada por el segundo ciclo) y el segundo elemento (el que le sigue), si la respuesta
a la condición es verdadera se realiza un intercambio entre los dos elementos.
4. Para realizar el intercambio se genera un almacenamiento temporal, el cual guarda el
dato del primer elemento, el segundo elemento toma el lugar del primero y en el lugar
del segundo se coloca lo que contiene el almacenamiento temporal.
Una vez que los ciclos terminan la estructura debe quedar ordenada de forma ascendente o
descendente, pero este procedimiento es considerado como el, pero de los casos ya que, si el
número de elementos de la estructura es de 100, se tienen que realizar 9900 comparaciones
entes de terminar la ejecución del método.
Un segundo procedimiento del método de la burbuja es:
1. Generar un ciclo que inicie desde cero hasta el número de elementos menos dos.
2. Generar un segundo ciclo desde el valor del ciclo anterior más uno hasta el número
de elementos menos uno;
3. Dentro del segundo ciclo debe existir una comparación que determina el tipo de
ordenamiento (ascendente o descendente) entre el primer elemento (posición
generada por el primer ciclo) y el segundo elemento (posición generada por el
segundo ciclo), si la respuesta a la condición es verdadera se realiza un intercambio
entre los dos elementos.
4. Para realizar el intercambio se genera un almacenamiento temporal, el cual guarda el
dato del primer elemento, el segundo elemento toma el lugar del primero y en el lugar
del segundo se coloca lo que contiene el almacenamiento temporal.
5. Una vez que los ciclos terminan la estructura debe quedar ordenada, la diferencia con
el procedimiento anterior radica en el número de comparaciones y posibles
intercambios que se presentan, en este segundo procedimiento, es menor ya que cada
pasada que se le da al arreglo se realiza una comparación menos que en la pasada
anterior.
Un tercer procedimiento del método de la burbuja es el siguiente:
1. Generar un ciclo que inicie desde uno hasta el número de elementos menos uno.
2. Generar un segundo ciclo que inicie desde el número de elementos menos uno y
mientras que ese valor sea mayor o igual al del ciclo anterior (con decrementos).
3. Dentro del segundo ciclo debe existir una comparación que determina el tipo de
ordenamiento (ascendente o descendente) entre el primer elemento (posición
generada por el segundo ciclo) y el segundo elemento (posición generada por el
segundo ciclo menos uno), si la respuesta a la condición es verdadera se realiza un
intercambio entre los dos elementos.
4. Para realizar el intercambio se genera un almacenamiento temporal, el cual guarda el
dato del primer elemento, el segundo elemento toma el lugar del primero y en el lugar
del segundo se coloca lo que contiene el almacenamiento temporal
Este tercer procedimiento es muy similar al anterior con la diferencia que el elemento que va
quedando es su lugar el primero no el último como en el caso anterior.
Quicksort.
El método de ordenamiento rápido o método Quicksort, es una técnica basada en otra
conocida con el nombre divide y vencerás, que permite ordenar una cantidad de elementos
en un tiempo proporcional a n2 en el peor de los casos o a n log n en el mejor de los casos.
El algoritmo original es recursivo, como la técnica en la que se basa.
La descripción del algoritmo para el método de ordenamiento Quicksort es la siguiente:
1. Debe elegir uno de los elementos del arreglo al que llamaremos pivote.
2. Debe acomodar los elementos del arreglo a cada lado del pivote, de manera que del
lado izquierdo queden todos los menores al pivote y del lado derecho los mayores al
pivote; considere que, en este momento, el pivote ocupa exactamente el lugar que le
corresponderá en el arreglo ordenado.
3. Colocado el pivote en su lugar, el arreglo queda separado en dos sub-arreglos, uno
formado por los elementos del lado izquierdo del pivote, y otro por los elementos del
lado derecho del pivote.
4. Repetir este proceso de forma recursiva para cada sub-arreglo mientras éstos
contengan más de un elemento. Una vez terminado este proceso todos los elementos
estarán ordenados.
Para elegir un pivote se puede aplicar cualquiera de las siguientes tres opciones:
1. El pivote será el primer elemento del arreglo,
2. El pivote será el elemento que está a la mitad del arreglo, o
3. Que el pivote se elija de entre tres elementos del arreglo (cualesquiera), los cuales se
deben comparar para seleccionar el valor intermedio de los tres y considerarlo como
el pivote.
La forma o técnica de reacomodo de los elementos del lado izquierdo y derecho del pivote,
aplica el siguiente procedimiento que es muy efectivo. Se utilizan dos índices: izquierda, al
que llamaremos índice inicial, y derecha, al que llamaremos índice final. Conociendo estos
elementos el algoritmo quedaría de la siguiente manera:
1. Recorrer el arreglo simultáneamente con izquierda y derecha: por la izquierda con
izquierda (desde el primer elemento), y por la derecha con derecha (desde el último
elemento).
2. Mientras el arreglo en su posición izquierda (arreglo[izquierda]) sea menor que el
pivote, continuamos el movimiento a la derecha.
3. Mientras el arreglo en su posición derecha (arreglo[derecha]) sea mayor que el pivote,
continuamos el movimiento a la izquierda.
4. Terminando los movimientos se compara los índices y si izquierda es menor o igual
a la derecha, se intercambian los elementos en esas posiciones y las posiciones se
cambian izquierda a la derecha y derecha a la izquierda.
5. Repetir los pasos anteriores hasta que se crucen los índices (izquierda sea menor o
igual a derecha).
6. El punto en que se cruzan los índices es la posición adecuada para colocar el pivote,
porque sabemos que a un lado los elementos son todos menores y al otro son todos
mayores (o habrían sido intercambiados).
ShellSort.
El método de ordenación shellsort es una versión mejorada del método de ordenación por
inserción directa, que se utiliza cuando el número de elementos es grande. Este método recibe
su nombre gracias a su creados Donald L. Shell, también se conoce con el nombre inserción
con incrementos decrecientes.
En el método de ordenación por inserción directa, cada elemento se compara con los
elementos contiguos de su izquierda de uno por uno, para lograr su ordenamiento; si, por
ejemplo, el elemento a comparar es el más pequeño y se encuentra en la última posición del
arreglo, hay que ejecutar muchas comparaciones antes de colocar el elemento en su lugar de
forma definitiva.
El método de ordenación shellsort mejora el ordenamiento por inserción comparando
elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga
pasos más grandes hacia la posición que debe ocupar. Los pasos múltiples sobre los
elementos se hacen con tamaños de espacio cada vez más pequeños y el último paso del
método es un simple ordenamiento por inserción directa, pero para entonces, los elementos
de arreglo ya casi están ordenados.
Para determinar el tamaño de los incrementos (saltos) constantes, el primero debe ser
generado a partir del tamaño del arreglo entre dos, obteniendo solo su parte entera de la
división o redondeando el resultado de la misma, y posteriormente ir reduciendo a la mitad
el incremento en cada repetición, hasta que el incremento sea un uno.
El procedimiento para aplicar el algoritmo de shellsort es el siguiente:
1. Generar un ciclo que se encargue de controlar el tamaño que deben tener los
incrementos.
➢ Este ciclo debe iniciar con la división del tamaño del arreglo entre dos.
➢ Mientras que el incremento sea mayor a cero debe continuar.
➢ Y el cambio de incremento se elige de entre dos opciones: un uno o la división del
incremento anterior entre dos.
2. Un segundo ciclo dentro del anterior, controla el número de comparaciones que se
deben hacer según el tamaño del incremento.
➢ El control de este ciclo debe iniciar con el incremento generado anteriormente.
➢ Mientras el control del ciclo sea menor que el tamaño del arreglo.
➢ El control debe cambiar de uno en uno.
3. Un tercer ciclo dentro del segundo controla en qué momento se detienen las
comparaciones o se hacen los posibles intercambios entre los elementos.
➢ El control de este ciclo debe iniciar con el valor del ciclo anterior.
➢ Mientras que el control sea mayor o igual al incremento del primer ciclo y el
elemento del arreglo de la posición del control de este ciclo menos el incremento,
sea mayor que el elemento del arreglo de la posición control de este ciclo, realice
los intercambios entre estas posiciones.
➢ Y el control se decremente con el valor del incremento.
• CountingSort.
• RadixSort.
• BucketSort.
Radix.
El método de ordenación radix es un algoritmo que ordena datos procesando sus elementos
de forma individual, según la posición que ocupan dentro del dato. Los datos numéricos por
dígitos y los datos alfabéticos por letras.
El método radix se clasifica en dos tipos según el orden en el que procesan los datos:
• De derecha a izquierda y
• De izquierda a derecha.
Si aplicamos este método solo a enteros, el método se clasificaría de la siguiente manera:
Ordenación externa.
La ordenación externa o de archivos, recibe este nombre ya que los elementos se encuentran
almacenados en un archivo, el cual se almacena en un dispositivo de almacenamiento
secundario o externo.
Algoritmos de ordenación externa.
Los algoritmos de ordenación externa son necesarios cuando los datos que se quiere ordenar
no caben en la memoria principal (RAM) de la computadora y por tal motivo se encuentran
almacenados en un dispositivo secundario externo (el disco duro, cinta, memoria USB, etc.).
La mayoría de estos algoritmos utilizan la técnica de divide y vencerás y la intercalación de
archivos, para aplicar el ordenamiento.
Por intercalación de archivos se entiende la unión o fusión de dos o más archivos,
previamente ordenados, en un solo archivo, el cual debe quedar ordenado al hacer la
intercalación.
Si se cuenta con dos archivos con datos previamente ordenados, el proceso de intercalación
entre los dos archivos, consiste en extraer el primer elemento de cada archivo y determinar
cuál es el menor, para colocarlo en el tercer archivo, extraer el siguiente elemento del archivo
y compararlo nuevamente contra el otro elemento que ya se tenía del otro archivo, para
determinar cuál ingresa al tercer archivo, este proceso se repita hasta que uno de los archivos
originales llegue hasta el fin, en este caso, solo resta transcribir los números del archivo que
no se ha llegado a su fin al tercer archivo.
Los algoritmos de ordenación externa más comunes son dos:
Referencias
• Acosta, J. A. (07 de octubre de 2016). Metodos de ordenamiento. Obtenido de
slideshare.net: https://es.slideshare.net/JosAntonioSandovalAc/estructura-de-datos-
unidad-4-metodos-de-ordenamiento
• Andrade, E. L. (2018). Metodos de ordenamiento. Obtenido de docentes.uaa.mx:
https://docentes.uaa.mx/elmunoz/wp-
content/uploads/sites/14/2018/07/MetodosOrdenBus.pdf
• Metodos de ordenacion. (26 de noviembre de 2013). Obtenido de sites.google.com:
https://sites.google.com/site/estructuradedatosmaac/home/metodos-de-ordenacion
• Metodos de ordenamiento. (19 de enero de 2012). Obtenido de blogspot.com:
https://tutorialyprogramas.blogspot.com/2012/11/metodos-de-ordenacion.html