Analisis y metodos de ordenamiento

Page 1

Análisis y métodos de ordenamiento PRESENTADO POR ELIER MAURICIO DUQUE BURGOS

INGENIERA DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DEL QUINDÍO.


DEFINICION

 En computación un método de ordenamiento es

un algoritmo encargado de organizar datos, todos ellos como elementos de una lista o un vector.  Los datos pueden ser de diferentes tipos, ya sea

numérico, lexicográficos u otros.


METODOS DE ORDENAMIENTO • • • • • • •

Insertion Sort, Binary Insertion Sort, Merge Sort, Heap Sort, Quick Sort, Counting Sort, Bubble Sort,

• • • • • •

Selection Sort, shell Sort, Sharker Sort, Stooge Sort, Merge Sort Entre otros.

 Cada uno de estos métodos posee una forma diferente

de procesar los datos y conseguir el objetivo.


LA IMPORTANCIA DEL ANALISIS

 El aplicar alguno de estos métodos para la solución

de un problema, debe ser analizado por el desarrollador, según la necesidad, puesto que el interés primordial, es hacerlo de forma correcta y eficiente. Esto depende de la cantidad de datos de entrada, la capacidad que tenga el equipo para procesar datos.


EFICIENCIA

 Definición general: es la relación entre los recursos

empleados y los resultados obtenidos. [1]  En computación, Es el proceso que mide el

consumo de memoria y de tiempo de respuesta que obtuvo un algoritmo y comparar los resultados. [2]


LA TÉCNICA DEL ANÁLISIS

Tradicionalmente han existido dos formas para calcular el tiempo de ejecución de un algoritmo y analizar su eficiencia. [2] 1. 2.

Técnica de comparación Técnica de análisis


Técnica de comparación

 Consisten en comparar dos o mas algoritmos con

un mismo conjunto de datos de entrada, de acuerdo al tiempo que consume al ejecutarse, se puede decir cual es mas eficiente. [2]  Nota: para esta comparación el hardware debe

ser el mismo.


Técnica de análisis

 El objetivo de esta técnica es analizar de forma

matemática y detallada cada uno de los pasos que ejecuta el algoritmo, asignarle a cada una un costo en consumo de tiempo, sumar cada una de ellos y generar la función  la función utilizada T(n). Unidades de tiempo que

consume para cualquier entrada. [2]


Ejemplo public void ejemplo(int x[], int n) { int i,j; for(i=0 ; i< n ; i++) { for(j=0 ; j< n; j++){ x[j]=x[i]; } } }[3]

ď‚— Este es un ejemplo que

necesita un anĂĄlisis detallado de ciclos pues se encuentran anidados. ď‚— Para este caso el ciclo

externo y el interno se ejecutaran n veces. [3]


Ejemplo public void ejemplo(int x[], int n) { int i,j; for(i=0 ; i< n ; i++) { for(j=0 (1) ; j< n (n+1) ; j++ (n-1+1) ){ x[j]=x[i] (n); } } }

ď‚— El ciclo mas interno se

ejecutara n veces y esas iteraciones dependen de las veces que itere el ciclo externo.[3] ď‚— Analizaremos

el

mas interno: Tint(n)= 3n+2

ciclo


Ejemplo public void ejemplo(int x[], int n) { int i,j; for(i=0 ; i< n ; i++) { for(j=0; j< n; j++){ x[j]=x[i]; } } }

 El

ciclo externo se ejecuta n veces por lo tanto multiplicaremos, el n por el Tint(n) y adicionaremos el tiempo de ejecución del ciclo externo.

 Ttotal(n)

((3n+2)*n)+2n+2+2  Ttotal(n) = 3n^2 + 4n +4

=


Notación Big O(n) (O grande)

 Debido a que la eficiencia de un algoritmo no se

puede expresar en una unidad de tiempo determinada y se escoge una medida arbitraria, se introduce un termino llamado notación asintótica, así nos da el comportamiento de dichas funciones pero en el limite. [2]


Notación Big Oh (O grande)  Para determinar O(n), partiendo de la función

T(n), se eliminan todos los términos excepto el de mayor grado y también los coeficientes, así conocemos la complejidad significativa. [3]  Ordenes de complejidad:  O(1)- constante considerada ideal

 O(log(n))- en algunos algoritmos recursivos, como

el metodo insertion sort.


Notación Big Oh (O grande)

 O(n)- lineal, ciclo sencillo

 O(n log(n))- se encuentran en algunos algoritmos

de ordenamiento como el heapSort y el mergeSort.  O(n^2)- cuando se tienen dos ciclos anidados  O(n^3)- cuando se tienen tres ciclos anidados  O(n^n)- la menos deseable de todas, como el de Fibonnacci [3]


ANÁLISIS, METODOS DE ORDENAMIENTOS  PROCEDIMIENTO:

Para cada algoritmo de ordenamiento, calculamos la complejidad en tiempo de ejecución, tomadas con diferentes tamaños de entrada:   

1000-10000 variando n de 1000 10000-100000 variando n en 10000 100000-1000000 variando n en 50000

 En cada uno de los intervalos fue escogidos los valores al azar desde

0 a 3'000.000. En cada una se tomo una muestra de cien datos y se promedio, y de esta forma saber el comportamiento del algoritmo, con ayuda de la grafica de los datos obtenidos.


ANÁLISIS, METODOS DE ORDENAMIENTOS  Para el desarrollo de esta actividad se utilizó un

computador con las siguientes características:


Análisis del Quick Sort • En

la siguiente grafica podemos ver los datos representados en una línea la cual nos muestra una complejidad del algoritmo de quick sort de forma logarítmica.

grafica 1. grafica de metodo quick sort


Análisis del Selección sort: • En

la siguiente grafica podemos ver los datos representados en una línea la cual nos muestra una complejidad del algoritmo de selection sort de forma logarítmica.

grafica 2. grafica de método de selection sort


Análisis del Merge Sort • En

la siguiente grafica podemos ver los datos representados en una línea la cual nos muestra una complejidad del algoritmo de merge sort de forma logarítmica.

grafica 3. grafica de merge sort


Análisis del Insertion sort • En

la siguiente grafica podemos ver los datos representados en una línea la cual nos muestra una complejidad del algoritmo de insertion sort de forma logarítmica.

grafica 4. grafica insertion


Análisis del BubbleSort • En

la siguiente grafica podemos ver los datos representados en una línea la cual nos muestra una complejidad del algoritmo de bubble sort de forma cuadrática.

grafica 7. grafica de bubble sort


Conclusiones • Los métodos de ordenamiento de bubblesort y el insertionsort son

los métodos mas lento para ordenar, de los que analizamos.

• En el desarrollo del ejercicio se puede concluir que algunos

algoritmos de ordenamiento son óptimos para pequeñas cantidades de datos. Y algunos otros son lentos inicialmente pero son mas óptimos para la manipulación de grandes masas de datos.

• Notamos que para saber bien el comportamiento de cada uno de los

algoritmos de ordenamiento debe hacerse con grandes cantidades de información y tomadas muchas veces ya que el comportamiento del procesador siempre no es igual afectando los tiempos de ejecución.


Bibliografía 1. Cardona Torres, S. A., Gutiérrez Posada, J. E., & Carmona Tabares, P. C.

(2005). Fundamentos de Análisis de Algoritmos. Armenia, Quindío, Colombia. 2. promonegocios.net. (2012). promonegocios.net. Obtenido de Portal de

Mercadotecnia con Artículos, Directorios y Foros: http://www.promonegocios.net/administracion/definicion-eficiencia.html 3. Universidad del Valle de México. (04 de Diciembre de 2009). Programación

Concurrente. Programación Concurrente . (A. F. Ahumada Duarte, Ed.) Mexicali, Baja California. Obtenido de scribd.com: http://es.scribd.com/doc/23804398/Algoritmos-Concurrentes-yAplicaciones


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.