SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Universidad Fermín Toro
Vicerrectorado Académico
Decanato de Ingeniería
Alumno:
Reny Galaviz
CI: 19.105.449
Jaime Marin
CI:20017468
Cabudare, Julio 2015
Análisis de Algoritmo
Método de Burbuja
El método de ordenamiento por intercambio directo o
método de la burbuja, es el mas 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).
Procedimientos
Primer Procedimiento es:
Generar un ciclo que inicie desde uno hasta el numero
de elementos del arreglo.
Generar un segundo ciclo dentro del anterior que inicie
desde cero hasta el numero de elementos del arreglo
menos dos.
Dentro del segundo ciclo debe existir una
comparación que determina el tipo de ordenamiento
(ascendente o descendente) entre el primer elemento
(posición generado 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.
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.
Segundo Procedimiento es:
Generar un ciclo que inicie desde cero hasta el
número de elementos menos dos.
Generar un segundo ciclo desde el valor del
ciclo anterior mas uno hasta el número de
elementos menos uno.
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.
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.
Tercer Procedimiento es :
Generar un ciclo que inicie desde uno hasta
el número de elementos menos uno.
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).
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.
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
Ventajas
Bastante Sencillo y mas utilizado por
su fácil comprensión y programación
Código reducido
Eficaz
Desventajas
Consume bastante tiempo de
computadora
Requiere de muchas
lecturas/escritura en memoria.
Método de 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:
Debe elegir uno de los elementos del arreglo
al que llamaremos pivote.
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.
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.
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:
El pivote será el primer elemento del
arreglo
El pivote será el elemento que esta a la
mitad del arreglo.
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: izq, al que llamaremos índice inicial, y der, al
que llamaremos índice final. Conociendo estos
elementos el algoritmo quedaría de la siguiente manera:
Recorrer el arreglo simultáneamente con izq y der: por la
izquierda con izq (desde el primer elemento), y por la derecha
con der (desde el último elemento).
Mientras el arreglo en su posición izq (arreglo[izq]) sea
menor que el pivote, continuamos el movimiento a la derecha.
Mientras el arreglo en su posición der (arreglo[der]) sea
mayor que el pivote, continuamos el movimiento a la
izquierda.
Terminando los movimientos se compara los índices y si
izq es menor o igual al der, se intercambian los elementos en
esas posiciones y las posiciones se cambian izq a la derecha y
der a la izquierda.
Repetir los pasos anteriores hasta que se crucen los índices
(izq sea menor o igual a der).
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).
Ventajas
Muy rápido.
No requiere memoria adicional.
Desventajas
Implementación un poco mas complicada.
Recursividad (utiliza muchos recursos).
Mucha diferencia entre el peor y el mejor
caso.
Método de 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.
El procedimiento para aplicar el algoritmo de shellsort es el siguiente:
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.
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.
Un tercer ciclo dentro del segundo controla
en que 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.
Ventajas
No requiere memoria adicional
Mejor rendimiento que el método
de inserción clásico.
Desventajas
Implementación al confusa.
Realiza numerosas
comparaciones e intercambios.
Método de Inserción
El ordenamiento por inserción (insertion sort en inglés)
es una manera muy natural de ordenar para un ser humano,
y puede usarse fácilmente para ordenar un mazo de cartas
numeradas en forma arbitraria. Requiere O(n²) operaciones
para ordenar una lista de n elementos.
Inicialmente se tiene un solo elemento, que obviamente es
un conjunto ordenado. Después, cuando hay k elementos
ordenados de menor a mayor, se toma el elemento k+1 y se
compara con todos los elementos ya ordenados,
deteniéndose cuando se encuentra un elemento menor
(todos los elementos mayores han sido desplazados una
posición a la derecha) o cuando ya no se encuentran
elementos (todos los elementos fueron desplazados y este
es el más pequeño). En este punto se inserta el elemento
k+1 debiendo desplazarse los demás elementos.
Análisis del algoritmo
Estabilidad: Este algoritmo nunca intercambia
registros con claves iguales. Por lo tanto es
estable.
Requerimientos de Memoria: Una variable
adicional para realizar los intercambios.
Tiempo de Ejecución: Para una lista de n
elementos el ciclo externo se ejecuta n1 veces.
El ciclo interno se ejecuta como máximo una
vez en la primera iteración, 2 veces en la
segunda, 3 veces en la tercera,
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
ordenadas o semiordenadas, porque en ese
caso realiza muy pocos desplazamientos.
Método de Selección
Funcionamiento
 Buscar el mínimo elemento de la lista.
Intercambio con el primero
Buscar el mínimo en el resto de la lista
Intercambiarlo con el segundo.
Características :
Buscar el mínimo elemento entre una posición i y el
final de la lista.
Intercambiar el mínimo con el elemento de la
posición i
Ventajas
Fácil implementación.
No requiere memoria adicional.
Realiza pocos intercambios.
Rendimiento constante: poca diferencia
entre el peor y el mejor caso.
Desventajas
 Lento.
 Realiza numerosas
comparaciones.
El método de ordenamiento por inserción es un
método sumamente sencillo el cual puede usarse
para ordenar un arreglo usando un simple
algoritmo de comparación entre dos elementos,
los beneficios de este método es que su
aplicación en cualquier lenguaje es muy fácil al
ser una forma muy natural y fácil de comprender
para cualquier usuario.
El método de ordenamiento por inserción se
asimila mucho a su vez con el método de la
burbuja siendo al mismo tiempo un poco mas
eficiente y compacto en cuanto código.
El ordenamiento de selección es un algoritmo de
ordenamiento que requiere n operaciones para
ordenar una lista de n elementos
Burbuja
#include<stdio.h>
#include<conio.h>
int a[3]={3,2,1};
int i,j,aux,n=3;
void main(){
clrscr();
for(i=0;i<=n;i++){
for(j=0;j<n-1;j++){
if(a[j]>a[j+1]){
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
}
}
}
for(i=0;i<3;i++)
{
printf("%d",a);
}
getch();
}
Shell
#include<stdio.h>
#include<conio.h>
int a[5];
int n=5;
void main()
{
int
inter=(n/2),i=0,j=0,k=0,aux;
clrscr();
for (i=0; i<5; i++)
{
printf("INSERTA UN
VALOR DEL INDICE %d",
i);
scanf("%d",& a);
}
while(inter>0){
for(i=inter;i<n;i++)
{
j=i-inter;
while(j>=0) {
k=j+inter;
if(a[j]<=a[k]){
j--;
}
else{
aux=a[j];
a[j]=a[k];
a[k]=aux;
j=j-inter;
}
}
}
inter=inter/2;
}
for(i=0;i<5;i++)
{
printf("%d n",a);
getch();
}
}
Quicksort
int pivot(int *unarray, int
izq, int der) { int i; int
pivote, valor_pivote; int
aux; pivote = izq;
valor_pivote =
unarray[pivote]; for
(i=izq+1; i<=der; i++){ if
(unarray[i] <
valor_pivote){ pivote++;
aux=unarray[i];
unarray[i]=unarray[pivote
]; unarray[pivote]=aux; } }
aux=unarray[izq];
unarray[izq]=unarray[pivo
te]; unarray[pivote]=aux;
return pivote; } void
Quicksort(int *unarray, int
izq, int der) { int pivote;
if(izq < der){
pivote=pivot(unarray, izq,
der); Quicksort(unarray,
izq, pivote-1);
Quicksort(unarray,
pivote+1, der); } }
Inserción
#include<stdio.h>
#include<conio.h>
int a[4]={4,1,7,2};
int n=4;
int i,j,aux;
void main(){
clrscr();
for(i=1;i<n;i++)
{
j=i;
aux=a;
while(j>0 && aux<a[j-1])
{
a[j]=a[j-1];
j--;
}
a[j]=aux;
}
for(i=0;i<4;i++)
{
printf("%d",a);
}
getch();
}
Selección
#include<stdio.h>
#include<conio.h>
int x[4]={1,4,8,6};
int n=4,j=0,i=0;
int temp=0,minimo=0;
void main(){
clrscr();
for(i=0;i<n-1;i++)
{
minimo=i;
for(j=i+1;j<n;j++)
{
if(x[minimo] > x[j])
{
minimo=j;
}
}
temp=x[minimo];
x[minimo]=x;
x=temp;
}
for(i=0;i<n;i++)
{
printf("%d",x);
}
getch();
}

Weitere ähnliche Inhalte

Was ist angesagt? (20)

derivadas
derivadasderivadas
derivadas
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Cap 7 estequiometria
Cap 7 estequiometriaCap 7 estequiometria
Cap 7 estequiometria
 
Leyes de Newton 5%
Leyes de Newton 5%  Leyes de Newton 5%
Leyes de Newton 5%
 
Leyes de newton, parte 1
Leyes de newton, parte 1Leyes de newton, parte 1
Leyes de newton, parte 1
 
Leyes básicas para un sistema
Leyes básicas para un sistemaLeyes básicas para un sistema
Leyes básicas para un sistema
 
Unidad 2. Las leyes de Newton del movimiento
Unidad 2. Las leyes de Newton del movimientoUnidad 2. Las leyes de Newton del movimiento
Unidad 2. Las leyes de Newton del movimiento
 
Aplicación de Leyes de Newton
Aplicación de Leyes de NewtonAplicación de Leyes de Newton
Aplicación de Leyes de Newton
 
Ordenamiento Simple
Ordenamiento SimpleOrdenamiento Simple
Ordenamiento Simple
 
Modelos matemáticos
Modelos matemáticosModelos matemáticos
Modelos matemáticos
 
Leyes de Newton - la presentacion
Leyes de Newton - la presentacionLeyes de Newton - la presentacion
Leyes de Newton - la presentacion
 
1ª ley de newton o ley de la inercia
1ª ley de newton o ley de la inercia1ª ley de newton o ley de la inercia
1ª ley de newton o ley de la inercia
 
Leyes de Newton
Leyes de NewtonLeyes de Newton
Leyes de Newton
 
ESTUDIANTES DEL LICEO MODERNO MAGANGUE
ESTUDIANTES DEL LICEO MODERNO MAGANGUEESTUDIANTES DEL LICEO MODERNO MAGANGUE
ESTUDIANTES DEL LICEO MODERNO MAGANGUE
 
Relatividad
RelatividadRelatividad
Relatividad
 
1. unidad i física
1. unidad i física1. unidad i física
1. unidad i física
 
Leyesmecanica 091013163057-phpapp01
Leyesmecanica 091013163057-phpapp01Leyesmecanica 091013163057-phpapp01
Leyesmecanica 091013163057-phpapp01
 
leyes de la mecanica
leyes de la mecanicaleyes de la mecanica
leyes de la mecanica
 
Las leyes de newton
Las leyes de newtonLas leyes de newton
Las leyes de newton
 
Las leyes de Newton
Las leyes de Newton Las leyes de Newton
Las leyes de Newton
 

Andere mochten auch

Presentación matematicas discretas Euler
Presentación matematicas discretas EulerPresentación matematicas discretas Euler
Presentación matematicas discretas EulerMiguel Vega
 
Representacion de Los Grafos
Representacion de Los GrafosRepresentacion de Los Grafos
Representacion de Los GrafosPedro Avaria
 
Ejercicio grafos manuel escobar
Ejercicio grafos manuel escobarEjercicio grafos manuel escobar
Ejercicio grafos manuel escobarManuel Bocaranda
 
Jose melendez estructura discreta 2
Jose melendez estructura discreta 2Jose melendez estructura discreta 2
Jose melendez estructura discreta 2josemanuel1513707
 
Ejercicios sobre grafos Reny Galaviz
Ejercicios sobre grafos Reny GalavizEjercicios sobre grafos Reny Galaviz
Ejercicios sobre grafos Reny GalavizReny-Galaviz
 
Matemáticas discretas- Teoría de Grafos
Matemáticas discretas- Teoría de GrafosMatemáticas discretas- Teoría de Grafos
Matemáticas discretas- Teoría de GrafosAngela Janeth Jimenez
 
Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.Nabor Chirinos
 

Andere mochten auch (10)

Presentación matematicas discretas Euler
Presentación matematicas discretas EulerPresentación matematicas discretas Euler
Presentación matematicas discretas Euler
 
Ejercicio 1 - Dijkstra
Ejercicio 1 - DijkstraEjercicio 1 - Dijkstra
Ejercicio 1 - Dijkstra
 
Representacion de Los Grafos
Representacion de Los GrafosRepresentacion de Los Grafos
Representacion de Los Grafos
 
Ejercicio grafos manuel escobar
Ejercicio grafos manuel escobarEjercicio grafos manuel escobar
Ejercicio grafos manuel escobar
 
Jose melendez estructura discreta 2
Jose melendez estructura discreta 2Jose melendez estructura discreta 2
Jose melendez estructura discreta 2
 
Ejercicios sobre grafos Reny Galaviz
Ejercicios sobre grafos Reny GalavizEjercicios sobre grafos Reny Galaviz
Ejercicios sobre grafos Reny Galaviz
 
Grafos resueltos
Grafos  resueltosGrafos  resueltos
Grafos resueltos
 
Matemáticas discretas- Teoría de Grafos
Matemáticas discretas- Teoría de GrafosMatemáticas discretas- Teoría de Grafos
Matemáticas discretas- Teoría de Grafos
 
Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.
 
Teoria de grafos
Teoria de grafosTeoria de grafos
Teoria de grafos
 

Ähnlich wie Métodos de ordenamiento

Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)Rubi Veronica Chimal Cuxin
 
Quick Sort
Quick SortQuick Sort
Quick Sortjo0eel
 
Unidad cinco estructura de datos
Unidad cinco estructura de datosUnidad cinco estructura de datos
Unidad cinco estructura de datosRené Sosa Arana
 
Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)Sarai Gotopo
 
MÉTODOS DE ORDENAMIENTO Y BUSQUEDA
MÉTODOS DE ORDENAMIENTO Y BUSQUEDAMÉTODOS DE ORDENAMIENTO Y BUSQUEDA
MÉTODOS DE ORDENAMIENTO Y BUSQUEDASmith Suarez Vargas
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfjorgeulises3
 
Estructura de dato unidad 5
Estructura de dato unidad 5Estructura de dato unidad 5
Estructura de dato unidad 5lenithoz
 
Josemanueunidad4 investigacionmetodos
Josemanueunidad4 investigacionmetodosJosemanueunidad4 investigacionmetodos
Josemanueunidad4 investigacionmetodosK Manuel TN
 
La física como ciencia
La física como cienciaLa física como ciencia
La física como cienciajhon alba
 
Metodos De Ordenamiento
Metodos De OrdenamientoMetodos De Ordenamiento
Metodos De Ordenamientolichic
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectoressirekarol
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctoresmishuhot
 
Medición de k con el masa resorte horizontal 29 enero 2011
Medición de k con el masa resorte horizontal 29 enero 2011Medición de k con el masa resorte horizontal 29 enero 2011
Medición de k con el masa resorte horizontal 29 enero 2011saliradu
 
UNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busquedaUNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busquedaMaiky Kobatakane
 

Ähnlich wie Métodos de ordenamiento (20)

Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Quick Sort
Quick SortQuick Sort
Quick Sort
 
Comparativa entre Algoritmos de Ordenamiento
Comparativa entre Algoritmos de OrdenamientoComparativa entre Algoritmos de Ordenamiento
Comparativa entre Algoritmos de Ordenamiento
 
Unidad cinco estructura de datos
Unidad cinco estructura de datosUnidad cinco estructura de datos
Unidad cinco estructura de datos
 
Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)
 
Quicksort
QuicksortQuicksort
Quicksort
 
MÉTODOS DE ORDENAMIENTO Y BUSQUEDA
MÉTODOS DE ORDENAMIENTO Y BUSQUEDAMÉTODOS DE ORDENAMIENTO Y BUSQUEDA
MÉTODOS DE ORDENAMIENTO Y BUSQUEDA
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
Estructura de dato unidad 5
Estructura de dato unidad 5Estructura de dato unidad 5
Estructura de dato unidad 5
 
Josemanueunidad4 investigacionmetodos
Josemanueunidad4 investigacionmetodosJosemanueunidad4 investigacionmetodos
Josemanueunidad4 investigacionmetodos
 
La física como ciencia
La física como cienciaLa física como ciencia
La física como ciencia
 
Metodos De Ordenamiento
Metodos De OrdenamientoMetodos De Ordenamiento
Metodos De Ordenamiento
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
 
Metodo burbuja C++
Metodo burbuja C++Metodo burbuja C++
Metodo burbuja C++
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
 
Presentación1
Presentación1Presentación1
Presentación1
 
Medición de k con el masa resorte horizontal 29 enero 2011
Medición de k con el masa resorte horizontal 29 enero 2011Medición de k con el masa resorte horizontal 29 enero 2011
Medición de k con el masa resorte horizontal 29 enero 2011
 
UNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busquedaUNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busqueda
 

Métodos de ordenamiento

  • 1. Universidad Fermín Toro Vicerrectorado Académico Decanato de Ingeniería Alumno: Reny Galaviz CI: 19.105.449 Jaime Marin CI:20017468 Cabudare, Julio 2015 Análisis de Algoritmo
  • 2. Método de Burbuja El método de ordenamiento por intercambio directo o método de la burbuja, es el mas 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). Procedimientos Primer Procedimiento es: Generar un ciclo que inicie desde uno hasta el numero de elementos del arreglo. Generar un segundo ciclo dentro del anterior que inicie desde cero hasta el numero de elementos del arreglo menos dos. Dentro del segundo ciclo debe existir una comparación que determina el tipo de ordenamiento (ascendente o descendente) entre el primer elemento (posición generado 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. 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. Segundo Procedimiento es: Generar un ciclo que inicie desde cero hasta el número de elementos menos dos. Generar un segundo ciclo desde el valor del ciclo anterior mas uno hasta el número de elementos menos uno. 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. 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. Tercer Procedimiento es : Generar un ciclo que inicie desde uno hasta el número de elementos menos uno. 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). 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. 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 Ventajas Bastante Sencillo y mas utilizado por su fácil comprensión y programación Código reducido Eficaz Desventajas Consume bastante tiempo de computadora Requiere de muchas lecturas/escritura en memoria.
  • 3. Método de 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: Debe elegir uno de los elementos del arreglo al que llamaremos pivote. 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. 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. 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: El pivote será el primer elemento del arreglo El pivote será el elemento que esta a la mitad del arreglo. 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: izq, al que llamaremos índice inicial, y der, al que llamaremos índice final. Conociendo estos elementos el algoritmo quedaría de la siguiente manera: Recorrer el arreglo simultáneamente con izq y der: por la izquierda con izq (desde el primer elemento), y por la derecha con der (desde el último elemento). Mientras el arreglo en su posición izq (arreglo[izq]) sea menor que el pivote, continuamos el movimiento a la derecha. Mientras el arreglo en su posición der (arreglo[der]) sea mayor que el pivote, continuamos el movimiento a la izquierda. Terminando los movimientos se compara los índices y si izq es menor o igual al der, se intercambian los elementos en esas posiciones y las posiciones se cambian izq a la derecha y der a la izquierda. Repetir los pasos anteriores hasta que se crucen los índices (izq sea menor o igual a der). 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). Ventajas Muy rápido. No requiere memoria adicional. Desventajas Implementación un poco mas complicada. Recursividad (utiliza muchos recursos). Mucha diferencia entre el peor y el mejor caso.
  • 4. Método de 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. El procedimiento para aplicar el algoritmo de shellsort es el siguiente: 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. 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. Un tercer ciclo dentro del segundo controla en que 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. Ventajas No requiere memoria adicional Mejor rendimiento que el método de inserción clásico. Desventajas Implementación al confusa. Realiza numerosas comparaciones e intercambios.
  • 5. Método de Inserción El ordenamiento por inserción (insertion sort en inglés) es una manera muy natural de ordenar para un ser humano, y puede usarse fácilmente para ordenar un mazo de cartas numeradas en forma arbitraria. Requiere O(n²) operaciones para ordenar una lista de n elementos. Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado. Después, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, deteniéndose cuando se encuentra un elemento menor (todos los elementos mayores han sido desplazados una posición a la derecha) o cuando ya no se encuentran elementos (todos los elementos fueron desplazados y este es el más pequeño). En este punto se inserta el elemento k+1 debiendo desplazarse los demás elementos. Análisis del algoritmo Estabilidad: Este algoritmo nunca intercambia registros con claves iguales. Por lo tanto es estable. Requerimientos de Memoria: Una variable adicional para realizar los intercambios. Tiempo de Ejecución: Para una lista de n elementos el ciclo externo se ejecuta n1 veces. El ciclo interno se ejecuta como máximo una vez en la primera iteración, 2 veces en la segunda, 3 veces en la tercera, 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 ordenadas o semiordenadas, porque en ese caso realiza muy pocos desplazamientos.
  • 6. Método de Selección Funcionamiento  Buscar el mínimo elemento de la lista. Intercambio con el primero Buscar el mínimo en el resto de la lista Intercambiarlo con el segundo. Características : Buscar el mínimo elemento entre una posición i y el final de la lista. Intercambiar el mínimo con el elemento de la posición i Ventajas Fácil implementación. No requiere memoria adicional. Realiza pocos intercambios. Rendimiento constante: poca diferencia entre el peor y el mejor caso. Desventajas  Lento.  Realiza numerosas comparaciones. El método de ordenamiento por inserción es un método sumamente sencillo el cual puede usarse para ordenar un arreglo usando un simple algoritmo de comparación entre dos elementos, los beneficios de este método es que su aplicación en cualquier lenguaje es muy fácil al ser una forma muy natural y fácil de comprender para cualquier usuario. El método de ordenamiento por inserción se asimila mucho a su vez con el método de la burbuja siendo al mismo tiempo un poco mas eficiente y compacto en cuanto código. El ordenamiento de selección es un algoritmo de ordenamiento que requiere n operaciones para ordenar una lista de n elementos
  • 7. Burbuja #include<stdio.h> #include<conio.h> int a[3]={3,2,1}; int i,j,aux,n=3; void main(){ clrscr(); for(i=0;i<=n;i++){ for(j=0;j<n-1;j++){ if(a[j]>a[j+1]){ aux=a[j]; a[j]=a[j+1]; a[j+1]=aux; } } } for(i=0;i<3;i++) { printf("%d",a); } getch(); } Shell #include<stdio.h> #include<conio.h> int a[5]; int n=5; void main() { int inter=(n/2),i=0,j=0,k=0,aux; clrscr(); for (i=0; i<5; i++) { printf("INSERTA UN VALOR DEL INDICE %d", i); scanf("%d",& a); } while(inter>0){ for(i=inter;i<n;i++) { j=i-inter; while(j>=0) { k=j+inter; if(a[j]<=a[k]){ j--; } else{ aux=a[j]; a[j]=a[k]; a[k]=aux; j=j-inter; } } } inter=inter/2; } for(i=0;i<5;i++) { printf("%d n",a); getch(); } } Quicksort int pivot(int *unarray, int izq, int der) { int i; int pivote, valor_pivote; int aux; pivote = izq; valor_pivote = unarray[pivote]; for (i=izq+1; i<=der; i++){ if (unarray[i] < valor_pivote){ pivote++; aux=unarray[i]; unarray[i]=unarray[pivote ]; unarray[pivote]=aux; } } aux=unarray[izq]; unarray[izq]=unarray[pivo te]; unarray[pivote]=aux; return pivote; } void Quicksort(int *unarray, int izq, int der) { int pivote; if(izq < der){ pivote=pivot(unarray, izq, der); Quicksort(unarray, izq, pivote-1); Quicksort(unarray, pivote+1, der); } } Inserción #include<stdio.h> #include<conio.h> int a[4]={4,1,7,2}; int n=4; int i,j,aux; void main(){ clrscr(); for(i=1;i<n;i++) { j=i; aux=a; while(j>0 && aux<a[j-1]) { a[j]=a[j-1]; j--; } a[j]=aux; } for(i=0;i<4;i++) { printf("%d",a); } getch(); } Selección #include<stdio.h> #include<conio.h> int x[4]={1,4,8,6}; int n=4,j=0,i=0; int temp=0,minimo=0; void main(){ clrscr(); for(i=0;i<n-1;i++) { minimo=i; for(j=i+1;j<n;j++) { if(x[minimo] > x[j]) { minimo=j; } } temp=x[minimo]; x[minimo]=x; x=temp; } for(i=0;i<n;i++) { printf("%d",x); } getch(); }