Está en la página 1de 8

ESCUELA POLITECNICA NACIONAL

TAREA EXTRA CLASE

Integrantes: Edgar Casco; José Cueva Grupo: GR-01

Facultad: Ing. Electrica y Electrónica Fecha:09/08/2017

shell(1)
El ordenamiento Shell, denomino así por su desarrollador Donald Shell (1959), ordena
una estructura de una manera similar a la del Bubble Sort, sin embargo no ordena
elementos adyacentes sino que utiliza una segmentación entre los datos. Esta
segmentación puede ser en cualquier tamaño de acuerdo a una secuencia de valores
que empiezan con un valor grande y van disminuyendo hasta llegar al '1'.

El ShellSort ordena subgrupos de elementos separados K unidades (respecto de su


posición en el arreglo) del arreglo o lista original. El valor K es llamado incremento.

Después de que los primeros K subgrupos han sido ordenados (generalmente se utiliza
inserción directa), se escoge un nuevo valor de K más pequeño, y el arreglo es de
nuevo partido entre el nuevo conjunto de subgrupos. Cada uno de los subgrupos
mayores es ordenado y el proceso se repite de nuevo con un valor más pequeño de K.

selección(2)
Éste método de ordenamiento se basa en la siguiente idea:
Paso 1.1: Buscar el mayor de todos los elementos de la lista.
Lista = | 3 | 2 | -1 | 5 | 0 | 2 |
Encuentra el valor 5 en la posición 3.
Paso 1.2: Poner el mayor al final (intercambiar el que está en la última posición de la
lista con el mayor encontrado).
Intercambia el elemento de la posición 3 con el de la posición 5. En la última posición
de la lista está el mayor de todos.
Lista = | 3 | 2 | -1 | 2 | 0 | 5 |
Paso 2.1: Buscar el mayor de todos los elementos del segmento de la lista entre la pri-
mera y la anteúltima posición.
Lista = | 3 | 2 | -1 | 2 | 0 | 5 |
Encuentra el valor 3 en la posición 0.
Paso 2.2: Poner el mayor al final del segmento (intercambiar el que está en la última
posición del segmento, o sea anteúltima posición de la lista, con el mayor encontrado).
Lista = | 0 | 2 | -1 | 2 | 3 | 5 |
Intercambia el elemento de la posición 0 con el valor de la posición 4. En la anteúltima
y última posición de la lista están los dos mayores en su posición definitiva.
Paso n: Se termina cuando queda un único elemento sin tratar: el que está en la pri-
mera posición de la lista, y que es el menor de todos porque todos los mayores fueron
reubicados.
Lista = | -1 | 0 | 2 | 2 | 3 | 5 |

ordenación por mezcla (3)


Fue desarrollado en 1945 por John Von Neumann.1
Conceptualmente, el ordenamiento por mezcla funciona de la siguiente manera:
1. Si la longitud de la lista es 0 ó 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.
El ordenamiento por mezcla incorpora dos ideas principales para mejorar su tiempo de
ejecución:
1. Una lista pequeña necesitará menos pasos para ordenarse que una lista
grande.
2. Se necesitan menos pasos para construir una lista ordenada a partir de dos lis-
tas también ordenadas, que a partir de dos listas desordenadas. Por ejemplo,
sólo será necesario entrelazar cada lista una vez que están ordenadas.
A continuación se describe el algoritmo en pseudocódigo (se advierte de que no se in-
cluyen casos especiales para vectores vacíos, etc.; una implementación en un lenguaje
de programación real debería tener en cuenta estos detalles):
function mergesort(m)
var list left, right, result
if length(m) ≤ 1
return m
else
var middle = length(m) / 2
for each x in m up to middle - 1
add x to left
for each x in m at and after middle
add x to right
left = mergesort(left)
right = mergesort(right)
if last(left) ≤ first(right)
append right to left
return left
result = merge(left, right)
return result
function merge(left, right)
var list result
while length(left) > 0 and length(right) > 0
if first(left) ≤ first(right)
append first(left) to result
left = rest(left)
else
append first(right) to result
right = rest(right)
if length(left) > 0
append rest(left) to result
if length(right) > 0
append rest(right) to result
return result

ordenación rápida(4)
QuickSort es un algoritmo basado en el principio “divide y vencerás”. Es una de los al-
goritmos más rápidos conocidos para ordenar. Este método es recursivo aunque exis-
ten versiones con formas iterativas que lo hacen aún más rápido. Su funcionamiento es
de la siguiente manera:

 Se elige un numero del vector como referencia, al que se le llamará “pivote”.


 Reordenar el arreglo de tal forma que los elementos menores al pivote queden
en el lado izquierdo y al lado derecho los elementos mayores.
 Se hace uso de la recursividad para ordenar tanto el conjunto de la izquierda
como el de la derecha.
Tenemos nuestro vector original:
{20,12,28,24,8,4,16}
Obtenemos variables:
inicio=0; fin=6; pivote=20;
elemIzq=1;
elemDer=6;
Recursivo 1
Iteración 1 del ciclo while.
{20,12,28,24,8,4,16}
Compara 12 – 16, no hay cambio.
Iteracion 2
{20,12,28,24,8,4,16}
Cambia 28 por 16.
{20,12,16,24,8,4,28}
Iteracion 3
{20,12,16,24,8,4,28}
Cambia 24 por 4.
{20,12,16,4,8,24,28}
Cambia 8 por 20.
{8,12,16,4,20,24,28}
Recursividad 2-1
inicio=0; fin=3; pivote=8;
elemIzq=1;
elemDer=3;
Iteracion 1:
{8,12,16,4,20,24,28}
Cambia 4 por 12
{8,4,16,12,20,24,28}
Cambia 8 por 4
{4,8,16,12,20,24,28}
Recursividad 2.2
inicio=2; fin=3; pivote=16;
elemIzq=3;
elemDer=3;
{4,8,16,12,20,24,28}
cambia 16 por 12.
{4,8,12,16,20,24,28}
Nuestro vector ya esta ordenado pero falta terminar el proceso recursivo.
Recursividad 3.1
No hay cambios, el vector ya esta ordenado.
Recursividad 3.2
No hay cambios, el vector ya esta ordenado.

inserción(5)

El ordenamiento por inserción es una manera muy natural de ordenar para un ser hu-
mano, y puede usarse fácilmente para ordenar un mazo de cartas numeradas en forma
arbitraria.

La idea de este algoritmo de ordenación consiste en ir insertando un elemento de la


lista ó un arreglo en la parte ordenada de la misma, asumiendo que el primer ele-
mento es la parte ordenada, el algoritmo ira comparando un elemento de la parte des-
ordenada de la lista con los elementos de la parte ordenada, insertando el elemento
en la posición correcta dentro de la parte ordenada, y así sucesivamente hasta obtener
la lista ordenada.

Insercion(A,N)
El algoritmo ordena los elementos del arreglo utlizando el método de inserción directa
A es un arreglo de N elementos
donde I, aux y k son variables de tipo entero

1.- Repetir con I desde 2 hasta N Hacer aux<- A[I] y k<- I-1
a. Repetir mientras(aux < [k]) y (k > 1) , Hacer A[k+1]<- A[k] y k<-- k-1
b. {fin del ciclo del paso 1.1}
c. Si a[k]<=aux Entonces: Hacer A[k+1]<-aux
Si no Hacer A[k+1]<- A[k], A[k]<-A[k]
d. { fin del condicional del paso 1.3}
2. {fin del condicional del paso1} ^

 Estabilidad: Este algoritmo nunca intercambia registros con claves iguales. Por
lo tanto es estable.
 Requerimientos de Memoria: Una variable adicional para realizar los intercam-
bios.
 Tiempo de Ejecución: Para una lista de n elementos el ciclo externo se ejecuta
n-1 veces. El ciclo interno se ejecuta como máximo una vez en la primera itera-
ción, 2 veces en la segunda, 3 veces en la tercera, etc. Esto produce una com-
plejidad O(n2).
Ventajas:

 Fácil implementación.
 Requerimientos mínimos de memoria.

Desventajas:

 Lento.
 Realiza numerosas comparaciones.

Este también es un algoritmo lento, pero puede ser de utilidad para listas que están or-
denadas o semiordenadas, porque en ese caso realiza muy pocos desplazamientos.

radixsort (6)

Es un algoritmo de ordenamiento conocido en el mundo de la programación que or-


dena enteros a partir de sus dígitos de forma individual.

El siguiente ejemplo funciona con una lista desordenada de números.

1. En primer lugar los va ordenando tomando en consideración el número menos


significativo (la unidad) del más pequeño al más grande. Como se muestra en el
punto 1.
2. Luego, a partir de la lista que obtuvimos en el paso anterior, ordenamos los nú-
meros de menor a mayor considerando esta vez la decena de cada uno de ellos.
Como se observa en el punto 2.
3. Finalmente comprobamos que la lista fue ordenada satisfactoriamente me-
diante este procedimiento.
Bibliografía

 http://algoritmobasico.blogspot.com/2015/11/metodo-de-ordenamiento-
shell.html
 http://librosweb.es/libro/algoritmos_python/capitulo_19/ordena-
miento_por_seleccion.html
 https://es.wikipedia.org/wiki/Ordenamiento_por_mezcla
 https://tutospoo.jimdo.com/tutoriales-java/m%C3%A9todos-de-orde-
naci%C3%B3n/ordenaci%C3%B3n-r%C3%A1pida-quicksort/
 http://lwh.free.fr/pages/algo/tri/tri_insertion_es.html
 https://www.ecured.cu/Ordenamiento_por_Inserci%C3%B3n
 http://c.conclase.net/orden/?cap=insercion
 https://arq232.wordpress.com/2012/08/30/algoritmo-de-ordenamiento-radix-
sort/

También podría gustarte