Está en la página 1de 9

REPÚBLICA BOLIVARIANA DE VENEZUELA

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA

VICERRECTORADO ACADÉMICO

COORDINACIÓN GENERAL DE PREGRADO

PROGRAMACION I

METODO DE ORDENAMIENTO

Integrante:

Jefferson Freites CI: 26.839.291

Ciudad Guayana, 10 de Mayo del 2019


Métodos de Ordenamiento

Ordenamiento

Ordenar es el proceso de ubicar elementos de una colección en algún orden.


Por ejemplo, una lista de palabras podría ordenarse alfabéticamente o por
longitud. Una lista de ciudades podría ordenarse por población, por área o
por código postal. Ya hemos visto una serie de algoritmos que fueron
capaces de beneficiarse de tener una lista ordenada (recuerde el ejemplo
final del anagrama y la búsqueda binaria).

Se han desarrollado y analizado muchísimos algoritmos de ordenamiento.


Esto sugiere que el ordenamiento es una importante área de estudio en las
ciencias de la computación. Ordenar un gran número de ítems puede
requerir una cantidad considerable de recursos informáticos. Al igual que la
búsqueda, la eficiencia de un algoritmo de ordenamiento está relacionada
con el número de ítems que se están procesando. Para las pequeñas
colecciones, un método de ordenamiento complejo puede resultar más
problemático que beneficioso. La sobrecarga puede ser demasiado alta. Por
otra parte, para colecciones más grandes, queremos aprovechar tantas
mejoras como sean posibles. En esta sección discutiremos varias técnicas
de ordenamiento y las compararemos respecto a sus tiempos de ejecución.

Antes de considerar algoritmos específicos, debemos pensar en las


operaciones que se pueden utilizar para analizar un proceso de
ordenamiento. Primero, será necesario comparar dos valores para ver cuál
es más pequeño (o más grande). Para ordenar una colección, será
necesario contar con una manera sistemática de comparar los valores para
ver si no están en orden. El número total de comparaciones será la forma
más común de medir un procedimiento de ordenamiento. En segundo lugar,
cuando los valores no están en la posición correcta con respecto a los otros,
puede ser necesario intercambiarlos. Este intercambio es una operación
costosa y el número total de intercambios también será importante para
evaluar la eficiencia global del algoritmo.
Es la operación de arreglar los registros de una tabla en algún orden
secuencial de acuerdo a un criterio de ordenamiento.
El ordenamiento se efectúa con base en el valor de algún campo en un
registro.
El propósito principal de un ordenamiento es el de facilitar las búsquedas de
los miembros del conjunto ordenado.
Ej. de ordenamientos:
Dir. telefónico, tablas de contenido, bibliotecas y diccionarios , etc.
El ordenar un grupo de datos significa mover los datos o sus referencias
para que queden en una secuencia tal que represente un orden, el cual
puede ser numérico, alfabético o incluso alfanumérico, ascendente o
descendente.

¿Cuándo conviene usar un método de ordenamiento?


Cuando se requiere hacer una cantidad considerable de búsquedas y es
importante el factor tiempo .
Tipos de ordenamientos :
Los 2 tipos de ordenamientos que se pueden realizar son: los internos y los
externos.

Los internos:
Son aquellos en los que los valores a ordenar están en memoria principal,
por lo que se asume que el tiempo que se requiere para acceder cualquier
elemento sea el mismo (a[1], a[500], etc.).

Los externos:
Son aquellos en los que los valores a ordenar están en memoria secundaria
(disco, cinta, cilindro magnético, etc.), por lo que se asume que el tiempo
que se requiere para acceder a cualquier elemento depende de la última
posición accesada (posición 1, posición 500, etc.).
Eficiencia en tiempo de ejecución:
Una medida de eficiencia es:
Contar el # de comparaciones (C)
Contar el # de movimientos de ítems (M)
Estos están en función de el #(n) de ítems a ser ordenados.
Un "buen algoritmo" de ordenamiento requiere de un orden nlong
comparaciones.
La eficiencia de los algoritmos se mide por el número de comparaciones e
intercambios que tienen que hacer, es decir, se toma n como el número de
elementos que tiene el arreglo o vector a ordenar y se dice que un algoritmo
realiza O(n2) comparaciones cuando compara n veces los n elementos, n x
n = n2

1. Por selección

En este tipo de algoritmos se SELECCIONA o se busca el elemento más


pequeño (o más grande) de todo el conjunto de elementos y se coloca
en su posición adecuada. Este proceso se repite para el resto de los
elementos hasta que todos son analizados. Entre estos algoritmos se
encuentra el de SELECCION DIRECTA.

2. Burbuja (bubble-sort)

El ordenamiento burbuja hace múltiples pasadas a lo largo de una


lista. Compara los ítems adyacentes e intercambia los que no están en
orden. 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.
3. Por inserción

En este tipo de algoritmo los elementos que van a ser ordenados son
considerados uno a la vez. Cada elemento es insertado en la posición
apropiada con respecto al resto de los elementos ya ordenados.

Entre estos algoritmos se encuentran el de inserción directa, Shell sort,


inserción binaria y hashing.

4. Por incrementos (Shell-sort)

El ordenamiento de Shell, a veces llamado “ordenamiento de incremento


decreciente”, mejora el ordenamiento por inserción al romper la lista
original en varias sublistas más pequeñas, cada una de las cuales se
ordena mediante un ordenamiento por inserción. La manera única en
que se eligen estas sublistas es la clave del ordenamiento de Shell. En
lugar de dividir la lista en sublistas de ítems contiguos, el ordenamiento
de Shell usa un incremento i, a veces denominado brecha, para crear
una sublista eligiendo todos los ítems que están separados por i ítems.

5. Por mezcla (merge-sort)

Ahora dirigimos nuestra atención a usar una estrategia de dividir y


conquistar como una forma de mejorar el desempeño de los algoritmos
de ordenamiento. El primer algoritmo que estudiaremos es el
ordenamiento por mezcla. El ordenamiento por mezcla es un algoritmo
recursivo que divide continuamente una lista por la mitad. Si la lista está
vacía o tiene un solo ítem, se ordena por definición (el caso base). Si la
lista tiene más de un ítem, dividimos la lista e invocamos recursivamente
un ordenamiento por mezcla para ambas mitades. Una vez que las dos
mitades están ordenadas, se realiza la operación fundamental,
denominada mezcla. La mezcla es el proceso de tomar dos listas
ordenadas más pequeñas y combinarlas en una sola lista nueva y
ordenada.
6. Por montículos (Heapsort)

El ordenamiento por montículos (heapsort en inglés) es


un algoritmo de ordenamiento no recursivo, no estable, con complejidad
computacional

Este algoritmo consiste en almacenar todos los elementos del vector a


ordenar en un montículo (heap), y luego extraer el nodo que queda
como nodo raíz del montículo (cima) en sucesivas iteraciones
obteniendo el conjunto ordenado. Basa su funcionamiento en una
propiedad de los montículos, por la cual, la cima contiene siempre el
menor elemento (o el mayor, según se haya definido el montículo) de
todos los almacenados en él. El algoritmo, después de cada extracción,
recoloca en el nodo raíz o cima, la última hoja por la derecha del último
nivel. Lo cual destruye la propiedad heap del árbol. Pero, a continuación
realiza un proceso de "descenso" del número insertado de forma que se
elige a cada movimiento el mayor de sus dos hijos, con el que se
intercambia. Este intercambio, realizado sucesivamente "hunde" el nodo
en el árbol restaurando la propiedad montículo del árbol y dejando paso
a la siguiente extracción del nodo raíz.

7. Quicksort
El ordenamiento rápido(quicksort en ingles) es un algoritmo basado en la
técnica de divide y vencerás, que permite, en promedio ordenar n
elementos en un tiempo proporcional a n log n. Esta técnica es la técnica
de ordenamiento más rápida conocida. Fue desarrollada por C. Anthony
R. Hoare en 1960. El algoritmo original es recursivo, pero se utilizan
versiones iterativas para mejorar su rendimiento(los algoritmos
recursivos son en general mas lentos que los iterativos, y consumen
recursos).)
Métodos de Búsquedas

1. Búsqueda Secuencial

Este método se usa para buscar un elemento de un vector, es explorar


secuencialmente el vector, es decir; recorrer el vector desde el prior elemento
hasta el último. Si se encuentra el elemento buscado se debe visualizar un
mensaje similar a “Fin de Búsqueda” o “Elemento encontrado” y otro que diga
“posición=” en caso contrario, visualizar un mensaje similar a “Elemento no
existe en la Lista”.

Este tipo de búsqueda compara cada elemento del vector con el valor a
encontrar hasta que este se consiga o se termine de leer el vector completo.

2. Búsqueda Binaria

Es un método que se basa en la división sucesiva del espacio ocupado por el


vector en sucesivas mitades, hasta encontrar el elemento buscado.

Esta búsqueda utiliza un método de “divide y vencerás” para localizar el valor


deseado. Con este método se examina primero el elemento central de la lista;
si este es el elemento buscado entonces la búsqueda ha terminado. En caso
contrario se determina si el elemento buscado está en la primera o segunda
mitad de la lista y a continuación se repite el proceso anterior, utilizando el
elemento central de esta sablista. Este tipo de búsqueda se utiliza en vectores
ordenados.
IMPLEMENTACION EN C
Método de ordenamiento por selección:
https://www.youtube.com/watch?v=HVa2_UtXkC
I
Método de ordenamiento por inserción:
https://www.youtube.com/watch?v=lYNyL0HuWSg

Método de ordenamiento burbuja:


https://www.youtube.com/watch?v=P_xNb8nFgmA

Método de ordenamiento por montículo:


https://www.youtube.com/watch?v=NRzjL_wbcvs

Método de ordenamiento por mezcla:


https://www.youtube.com/watch?v=55d8cAK9oE0

Método de ordenamiento por incremento:


https://www.youtube.com/watch?v=ixd134Lyt78

Método de ordenamiento quicksort:


https://www.youtube.com/watch?v=xaFvKzmU-kQ

Búsqueda secuencial https://www.youtube.com/watch?v=_On-0W0-6vQ


Búsqueda binaria https://www.youtube.com/watch?v=pxh4QFzDh-Q

También podría gustarte