Top Banner
ALGORITMOS DE ORDENACION Maestría en Ingeniería de Sistemas y Computo 10/08/2012 Sebastián Arboleda D. Néstor Álzate Mejía Ian Pastrana Jorge Iván Montealegre Rondón
27

Proyecto Final Algoritmia

Jul 30, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Proyecto Final Algoritmia

ALGORITMOS DE ORDENACION

Maestría en Ingeniería de Sistemas y Computo

10/08/2012

Sebastián Arboleda D. Néstor Álzate Mejía Ian Pastrana Jorge Iván Montealegre Rondón

Page 2: Proyecto Final Algoritmia

2

Contenido Resumen ............................................................................................................................................................. 5

Abstract .............................................................................................................................................................. 5

I. INTRODUCCION ..................................................................................................................................... 5

II. OBJETIVOS .............................................................................................................................................. 5

III. DESCRIPCION DE LOS DATOS A ORDENAR ................................................................................ 6

A. Números a ordenar: ............................................................................................................................... 6

B. Tamaños de las entradas: ....................................................................................................................... 6

IV. ANALISIS EN TIEMPO REAL ........................................................................................................... 7

A. Insertion Sort ....................................................................................................................................... 7

B. Binary Insertion Sort .......................................................................................................................... 7

C. Merge Sort ........................................................................................................................................... 7

D. Heap Sort ............................................................................................................................................. 8

E. Selection Sort ....................................................................................................................................... 8

F. Quick Sort ............................................................................................................................................ 9

G. Counting Sort....................................................................................................................................... 9

H. Bubble Sort .......................................................................................................................................... 9

I. Heapinsert Sort. ................................................................................................................................. 10

V. TIEMPOS DE EJECUCION ESPERADOS SEGÚN EL FACTOR CONSTANTE .............................. 11

A. Insertion Sort ..................................................................................................................................... 11

B. Binary Insertion Sort ........................................................................................................................ 12

C. Merge Sort ......................................................................................................................................... 12

D. Bubble Sort ........................................................................................................................................ 13

E. Heap Sort ........................................................................................................................................... 14

F. Quick Sort .......................................................................................................................................... 15

G. Counting Sort..................................................................................................................................... 16

H. Selection Sort ..................................................................................................................................... 16

I. Heapinsert Sort. ................................................................................................................................. 16

VI. GRÁFICOS DE TAMAÑO DE ENTRADA VERSUS TIEMPO DE EJECUCIÓN ......................... 18

A. Insertion Sort ..................................................................................................................................... 18

B. Binary Insertion Sort ........................................................................................................................ 19

C. Merge Sort ......................................................................................................................................... 20

D. Heap Sort ........................................................................................................................................... 21

E. Quick Sort .......................................................................................................................................... 22

F. Counting Sort..................................................................................................................................... 23

Page 3: Proyecto Final Algoritmia

3

G. Bubble Sort ........................................................................................................................................ 23

H. Selection Sort ..................................................................................................................................... 24

I. Heapinsert Sort. ................................................................................................................................. 25

J. Ejecuciones con entradas de 50.000 a 500.000. ............................................................................... 26

K. Ejecuciones con entradas superiores a 1’000.000. .......................................................................... 26

VII. CONCLUSIONES .............................................................................................................................. 27

Page 4: Proyecto Final Algoritmia

4

Page 5: Proyecto Final Algoritmia

5

RESUMEN

El presente documento presenta la implementación y prueba de varios algoritmos de ordenamiento en Matlab,

con el fin de determinar la eficiencia en tiempo y espacio de almacenamiento de cada algoritmo.

Palabras Clave— Insertion Sort, Binary Insertion Sort, Merge Sort, Heap Sort, Quick Sort, Counting Sort,

Bubble Sort, Selection Sort, y Heapinsert Sort..

ABSTRACT

This paper presents the implementation and testing of several sorting algorithms in Matlab, to determine the

efficiency in time and storage for each algorithm.

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

Sort, Selection Sort, y Heapinsert Sort.

I. INTRODUCCION

n la computación los algorimos de ordenamiento se encargan, como su nombre lo dice, de organizar todos

los elementos de un vector o arreglos de datos. Por lo tanto estos algoritmos tienen como entrada el vector

en desorden, y como salida el vector ordenado.

Además, hay que tener en cuenta que dichos algoritmos son están amarrados a complejidades distintas, por lo

tanto todos realizan el mismo trabajo pero con eficiencias diferentes. Los algoritmos que se analizaron en este

documento son:

Algoritmo Complejidad

Insertion Sort θ(n2)

Binary Insertion Sort θ(n2)

Merge Sort θ(n log n)

Heap Sort θ(n log n)

Quick Sort θ(n log n)

Counting Sort θ(n)

Bubble Sort θ(n2)

Selection Sort θ(n2)

Heapinsert Sort. θ(n2)

II. OBJETIVOS

Implementar y probar todos los algoritmos de ordenamiento trabajados en clase: InsertionSort,

Merge Sort, Heap Sort, Quick Sorty Counting Sort.

Investigar, implementar y probarlos algoritmos de ordenamiento: Binary InsertionSort, Bubble Sort,

Selection Sort y HeapinsertSort.

Aplicar la técnica de programación de divide y vencerás en los algoritmos de 0rdenamientode Merge

Sort y Quick Sort.

Escoger un lenguaje de programación y unas estructuras de datos para la implementación de los

diferentes algoritmos de ordenamiento.

Analizar los diferentes algoritmos de ordenamiento desde dos puntos de vista: complejidad espacial

y temporal.

E

Page 6: Proyecto Final Algoritmia

6

III. DESCRIPCION DE LOS DATOS A ORDENAR

A. Números a ordenar:

Este proyecto está destinado a ordenar números enteros sin signo generados aleatoriamente entre 0 (cero) y

6’000.000 (seis millones). Cada número debe tener la misma probabilidad de aparición.

B. Tamaños de las entradas:

Todos los algoritmos de ordenamiento se tienen que probar (correr) con entradas de tamaño: 50.000, 100.000,

150.000, 200.000, 250.000, 300.000, 350.000, 400.000, 450.000 y 500.000. Para estos tamaños de entrada se

deben calcular los factores constantes para los algoritmos de complejidad en el caso promedio θ(n2).

Adicionalmente para todos los algoritmos de complejidad en el caso promedio de θ(n) o θ(n log n), los

tamaños de las entradas son:1’000.000, 2’000.000, 3’000.000, 4’000.000, 5’000.000, 6’000.000, 7’000.000,

8’000.000, ..., 20’000.000. Con estos tamaños de entrada se deben calcular los factores constantes para estos

algoritmos.

Page 7: Proyecto Final Algoritmia

7

IV. ANALISIS EN TIEMPO REAL

A continuación se presentan los datos de los tiempos de ejecución, consumo de espacio de almacenamiento y

factores constantes que fueron tomados durante la práctica para cada uno de los algoritmos.

A. Insertion Sort

B. Binary Insertion Sort

C. Merge Sort

Entrada (n) Tiempo Real [segundos] Espacio en Memoria (Bytes) Complejidad θ(n^2) Factor Constante

50000 35.137522 400,000 2500000000 1.4055E-08

100000 141.818339 800,000 10000000000 1.41818E-08

150000 319.444238 1,200,000 22500000000 1.41975E-08

200000 564.244274 1,600,000 40000000000 1.41061E-08

250000 881.916429 2,000,000 62500000000 1.41107E-08

300000 1275.64653 2,400,000 90000000000 1.41739E-08

350000 1734.490016 2,800,000 1.225E+11 1.41591E-08

400000 2273.353243 3,200,000 1.6E+11 1.42085E-08

450000 2854.472705 3,600,000 2.025E+11 1.40962E-08

500000 3542.149608 4,000,000 2.5E+11 1.41686E-08

1.41457E-08

INSERTION SORT ANALISIS TIEMPO REAL

PROMEDIO FACTOR CONSTANTE =

Entrada (n) Tiempo Real [segundos] Espacio en Memoria (Bytes) Complejidad θ(n^2) Factor Constante

50000 34.42576 400,000 2500000000 1.37703E-08

100000 136.576452 800,000 10000000000 1.36576E-08

150000 306.557098 1,200,000 22500000000 1.36248E-08

200000 549.02097 1,600,000 40000000000 1.37255E-08

250000 856.073595 2,000,000 62500000000 1.36972E-08

300000 1223.861496 2,400,000 90000000000 1.35985E-08

350000 1662.585207 2,800,000 1.225E+11 1.35721E-08

400000 2200.656242 3,200,000 1.6E+11 1.37541E-08

450000 2757.416428 3,600,000 2.025E+11 1.36169E-08

500000 3407.500392 4,000,000 2.5E+11 1.363E-08

1.36647E-08PROMEDIO FACTOR CONSTANTE =

BINARY INSERTION SORT ANALISIS TIEMPO REAL

Entrada (n) Tiempo Real [segundos] Espacio en Memoria (Bytes) Complejidad θ(n Log n) Factor Constante

50000 6.108123 400,000 234948.5002 2.59977E-05

100000 20.789145 800,000 500000 4.15783E-05

150000 42.956784 1,200,000 776413.6889 5.53272E-05

200000 74.379011 1,600,000 1060205.999 7.01552E-05

250000 119.086044 2,000,000 1349485.002 8.82455E-05

300000 184.127953 2,400,000 1643136.376 0.000112059

350000 272.138469 2,800,000 1940423.816 0.000140247

400000 363.766679 3,200,000 2240823.997 0.000162336

450000 476.723519 3,600,000 2543945.631 0.000187395

500000 592.964795 4,000,000 2849485.002 0.000208095

1000000 2209.218212 8,000,000 6000000 0.000368203

0.000132695

MERGE SORT ANALISIS TIEMPO REAL

PROMEDIO FACTOR CONSTANTE =

Page 8: Proyecto Final Algoritmia

8

D. Heap Sort

E. Selection Sort

Entrada (n) Tiempo Real [segundos] Espacio en Memoria (Bytes) Complejidad θ(n Log n) Factor Constante

50000 6.201938 400,000 234948.5002 2.6397E-05

100000 13.098625 800,000 500000 2.61973E-05

150000 20.311432 1,200,000 776413.6889 2.61606E-05

200000 28.180881 1,600,000 1060205.999 2.65806E-05

250000 36.187559 2,000,000 1349485.002 2.68158E-05

300000 43.966724 2,400,000 1643136.376 2.67578E-05

350000 52.192144 2,800,000 1940423.816 2.68973E-05

400000 59.008751 3,200,000 2240823.997 2.63335E-05

450000 68.298875 3,600,000 2543945.631 2.68476E-05

500000 75.70731 4,000,000 2849485.002 2.65688E-05

1000000 157.261957 8,000,000 6000000 2.62103E-05

2000000 334.795543 16,000,000 12602059.99 2.65667E-05

3000000 517.361509 24,000,000 19431363.76 2.66251E-05

4000000 703.391089 32,000,000 26408239.97 2.66353E-05

5000000 891.316335 40,000,000 33494850.02 2.66105E-05

6000000 1083.557104 48,000,000 40668907.5 2.66434E-05

7000000 1283.913765 56,000,000 47915686.28 2.67953E-05

8000000 1476.87115 64,000,000 55224719.9 2.67429E-05

9000000 1667.943904 72,000,000 62588182.58 2.66495E-05

10000000 1871.688668 80,000,000 70000000 2.67384E-05

11000000 2045.491806 88,000,000 77455319.54 2.64087E-05

12000000 2236.672086 96,000,000 84950174.95 2.63292E-05

13000000 2454.59471 104,000,000 92481263.58 2.65415E-05

14000000 2664.525537 112,000,000 100045792.5 2.66331E-05

15000000 2872.963084 120,000,000 107641368.9 2.66901E-05

16000000 3040.425081 128,000,000 115265919.7 2.63775E-05

17000000 3251.834246 136,000,000 122917631.7 2.64554E-05

18000000 3465.23878 144,000,000 130594905.1 2.65343E-05

19000000 3664.355189 152,000,000 138296318.4 2.64964E-05

20000000 3876.868282 160,000,000 146020599.9 2.65501E-05

2.65016E-05

HEAP SORT ANALISIS TIEMPO REAL

PROMEDIO FACTOR CONSTANTE =

Entrada (n) Tiempo Real [segundos] Espacio en Memoria (Bytes) Complejidad θ(n^2) Factor Constante

50000 15.325864 400,000 2500000000 6.13035E-09

100000 60.836257 800,000 10000000000 6.08363E-09

150000 136.280917 1,200,000 22500000000 6.05693E-09

200000 241.885267 1,600,000 40000000000 6.04713E-09

250000 379.624277 2,000,000 62500000000 6.07399E-09

300000 547.290854 2,400,000 90000000000 6.08101E-09

350000 748.140632 2,800,000 1.225E+11 6.10727E-09

400000 974.19005 3,200,000 1.6E+11 6.08869E-09

450000 1223.397518 3,600,000 2.025E+11 6.04147E-09

500000 1527.781232 4,000,000 2.5E+11 6.11112E-09

6.08216E-09PROMEDIO FACTOR CONSTANTE =

SELECTION SORT ANALISIS TIEMPO REAL

Page 9: Proyecto Final Algoritmia

9

F. Quick Sort

G. Counting Sort

Los datos del couting sort no fueron posibles de tomar, el algoritmo funciono bien, pero los tiempos fueron

demasiado largos, por lo tanto no lo pudimos implementar.

H. Bubble Sort

Entrada (n) Tiempo Real [segundos] Espacio en Memoria (Bytes) Complejidad θ(n Log n) Factor Constante

50000 0.847028 400,000 234948.5002 3.60516E-06

100000 1.824771 800,000 500000 3.64954E-06

150000 2.832826 1,200,000 776413.6889 3.6486E-06

200000 3.731105 1,600,000 1060205.999 3.51923E-06

250000 5.130684 2,000,000 1349485.002 3.80196E-06

300000 5.11696 2,400,000 1643136.376 3.11414E-06

350000 7.175374 2,800,000 1940423.816 3.69784E-06

400000 7.118303 3,200,000 2240823.997 3.17665E-06

450000 7.786632 3,600,000 2543945.631 3.06085E-06

500000 10.091781 4,000,000 2849485.002 3.54162E-06

1000000 19.601449 8,000,000 6000000 3.26691E-06

2000000 37.427275 16,000,000 12602059.99 2.96993E-06

3000000 61.991381 24,000,000 19431363.76 3.19027E-06

4000000 86.950387 32,000,000 26408239.97 3.29255E-06

5000000 94.464484 40,000,000 33494850.02 2.82027E-06

6000000 128.081634 48,000,000 40668907.5 3.14937E-06

7000000 140.288425 56,000,000 47915686.28 2.92782E-06

8000000 160.905011 64,000,000 55224719.9 2.91364E-06

9000000 161.725994 72,000,000 62588182.58 2.58397E-06

10000000 214.513319 80,000,000 70000000 3.06448E-06

11000000 213.888123 88,000,000 77455319.54 2.76144E-06

12000000 274.421142 96,000,000 84950174.95 3.23038E-06

13000000 282.175751 104,000,000 92481263.58 3.05117E-06

14000000 339.369526 112,000,000 100045792.5 3.39214E-06

15000000 334.473732 120,000,000 107641368.9 3.1073E-06

16000000 320.688737 128,000,000 115265919.7 2.78216E-06

17000000 334.208801 136,000,000 122917631.7 2.71897E-06

18000000 427.172042 144,000,000 130594905.1 3.27097E-06

19000000 439.853189 152,000,000 138296318.4 3.18051E-06

20000000 506.296534 160,000,000 146020599.9 3.4673E-06

3.19857E-06

QUICK SORT ANALISIS TIEMPO REAL

PROMEDIO FACTOR CONSTANTE =

Entrada (n) Tiempo Real [segundos] Espacio en Memoria (Bytes) Complejidad θ(n^2) Factor Constante

50000 55.485609 400,000 2500000000 2.21942E-08

100000 221.847542 800,000 10000000000 2.21848E-08

150000 493.801013 1,200,000 22500000000 2.19467E-08

200000 879.00641 1,600,000 40000000000 2.19752E-08

250000 1381.523105 2,000,000 62500000000 2.21044E-08

300000 1994.94568 2,400,000 90000000000 2.21661E-08

350000 2705.325768 2,800,000 1.225E+11 2.20843E-08

400000 3530.178581 3,200,000 1.6E+11 2.20636E-08

450000 4410.715939 3,600,000 2.025E+11 2.17813E-08

500000 5533.220772 4,000,000 2.5E+11 2.21329E-08

2.20633E-08

BUBBLE SORT ANALISIS TIEMPO REAL

PROMEDIO FACTOR CONSTANTE =

Page 10: Proyecto Final Algoritmia

10

I. Heapinsert Sort.

Entrada (n) Tiempo Real [segundos] Espacio en Memoria (Bytes) Complejidad θ(n^2) Factor Constante

50000 16.164777 400,000 2500000000 6.46591E-09

100000 63.876305 800,000 10000000000 6.38763E-09

150000 142.85952 1,200,000 22500000000 6.34931E-09

200000 252.1816 1,600,000 40000000000 6.30454E-09

250000 395.690399 2,000,000 62500000000 6.33105E-09

300000 567.880046 2,400,000 90000000000 6.30978E-09

350000 775.62774 2,800,000 1.225E+11 6.33166E-09

400000 1004.564346 3,200,000 1.6E+11 6.27853E-09

450000 1274.276897 3,600,000 2.025E+11 6.29273E-09

500000 1579.125579 4,000,000 2.5E+11 6.3165E-09

6.33676E-09

HEAPINSERT SORT ANALISIS TIEMPO REAL

PROMEDIO FACTOR CONSTANTE =

Page 11: Proyecto Final Algoritmia

11

V. TIEMPOS DE EJECUCION ESPERADOS SEGÚN EL FACTOR CONSTANTE

Con los factores constantes de cada uno de los algoritmos se infieren los tiempos de ejecución para cada uno

de ellos con entradas de tamaño: 200’000.000, 210’000.000, 220’000.000,... , 290’000.000.

A continuación se presentan los datos inferidos a partir de los factores constantes y se comparan con los

tiempos tomados en tiempo real de ejecución.

A. Insertion Sort

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes)

200,000,000 565,829,217.26 1,600,000,000

210,000,000 623,826,712.03 1,680,000,000

220,000,000 684,653,352.88 1,760,000,000

230,000,000 748,309,139.82 1,840,000,000

240,000,000 814,794,072.85 1,920,000,000

250,000,000 884,108,151.97 2,000,000,000

260,000,000 956,251,377.17 2,080,000,000

270,000,000 1,031,223,748.45 2,160,000,000

280,000,000 1,109,025,265.83 2,240,000,000

290,000,000 1,189,655,929.29 2,320,000,000

INSERTION SORT ANALISIS TIEMPO ESPERADO

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes) Tiempo Real [segundos]

50000 35.36 400,000 35.137522

100000 141.46 800,000 141.818339

150000 318.28 1,200,000 319.444238

200000 565.83 1,600,000 564.244274

250000 884.11 2,000,000 881.916429

300000 1,273.12 2,400,000 1275.64653

350000 1,732.85 2,800,000 1734.490016

400000 2,263.32 3,200,000 2273.353243

450000 2,864.51 3,600,000 2854.472705

500000 3,536.43 4,000,000 3542.149608

INSERTION SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS

Page 12: Proyecto Final Algoritmia

12

B. Binary Insertion Sort

C. Merge Sort

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes)

200,000,000 546,587,881.67 1,600,000,000

210,000,000 602,613,139.54 1,680,000,000

220,000,000 661,371,336.82 1,760,000,000

230,000,000 722,862,473.50 1,840,000,000

240,000,000 787,086,549.60 1,920,000,000

250,000,000 854,043,565.10 2,000,000,000

260,000,000 923,733,520.02 2,080,000,000

270,000,000 996,156,414.34 2,160,000,000

280,000,000 1,071,312,248.06 2,240,000,000

290,000,000 1,149,201,021.20 2,320,000,000

BINARY INSERTION SORT ANALISIS TIEMPO ESPERADO

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes) Tiempo Real [segundos]

50000 34.16 400,000 34.42576

100000 136.65 800,000 136.576452

150000 307.46 1,200,000 306.557098

200000 546.59 1,600,000 549.02097

250000 854.04 2,000,000 856.073595

300000 1,229.82 2,400,000 1223.861496

350000 1,673.93 2,800,000 1662.585207

400000 2,186.35 3,200,000 2200.656242

450000 2,767.10 3,600,000 2757.416428

500000 3,416.17 4,000,000 3407.500392

BINARY INSERTION SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes)

200,000,000 220,300.23 1,600,000,000

210,000,000 231,905.70 1,680,000,000

220,000,000 243,538.62 1,760,000,000

230,000,000 255,197.74 1,840,000,000

240,000,000 266,881.93 1,920,000,000

250,000,000 278,590.14 2,000,000,000

260,000,000 290,321.41 2,080,000,000

270,000,000 302,074.84 2,160,000,000

280,000,000 313,849.63 2,240,000,000

290,000,000 325,645.00 2,320,000,000

MERGE SORT ANALISIS TIEMPO ESPERADO

Page 13: Proyecto Final Algoritmia

13

D. Bubble Sort

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes) Tiempo Real [segundos]

50000 31.18 400,000 6.108123

100000 66.35 800,000 20.789145

150000 103.03 1,200,000 42.956784

200000 140.68 1,600,000 74.379011

250000 179.07 2,000,000 119.086044

300000 218.04 2,400,000 184.127953

350000 257.48 2,800,000 272.138469

400000 297.35 3,200,000 363.766679

450000 337.57 3,600,000 476.723519

500000 378.11 4,000,000 592.964795

1000000 796.17 8,000,000 2209.218212

MERGE SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes)

200,000,000 882,533,628.05 1,600,000,000

210,000,000 972,993,324.92 1,680,000,000

220,000,000 1,067,865,689.94 1,760,000,000

230,000,000 1,167,150,723.09 1,840,000,000

240,000,000 1,270,848,424.39 1,920,000,000

250,000,000 1,378,958,793.82 2,000,000,000

260,000,000 1,491,481,831.40 2,080,000,000

270,000,000 1,608,417,537.12 2,160,000,000

280,000,000 1,729,765,910.97 2,240,000,000

290,000,000 1,855,526,952.97 2,320,000,000

BUBBLE SORT ANALISIS TIEMPO ESPERADO

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes) Tiempo Real [segundos]

50000 55.16 400,000 55.485609

100000 220.63 800,000 221.847542

150000 496.43 1,200,000 493.801013

200000 882.53 1,600,000 879.00641

250000 1,378.96 2,000,000 1381.523105

300000 1,985.70 2,400,000 1994.94568

350000 2,702.76 2,800,000 2705.325768

400000 3,530.13 3,200,000 3530.178581

450000 4,467.83 3,600,000 4410.715939

500000 5,515.84 4,000,000 5533.220772

BUBBLE SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS

Page 14: Proyecto Final Algoritmia

14

E. Heap Sort

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes)

200,000,000 43,998.17 1,600,000,000

210,000,000 46,316.00 1,680,000,000

220,000,000 48,639.32 1,760,000,000

230,000,000 50,967.87 1,840,000,000

240,000,000 53,301.42 1,920,000,000

250,000,000 55,639.78 2,000,000,000

260,000,000 57,982.73 2,080,000,000

270,000,000 60,330.12 2,160,000,000

280,000,000 62,681.77 2,240,000,000

290,000,000 65,037.53 2,320,000,000

HEAP SORT ANALISIS TIEMPO ESPERADO

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes) Tiempo Real [segundos]

50000 6.23 400,000 6.201938

100000 13.25 800,000 13.098625

150000 20.58 1,200,000 20.311432

200000 28.10 1,600,000 28.180881

250000 35.76 2,000,000 36.187559

300000 43.55 2,400,000 43.966724

350000 51.42 2,800,000 52.192144

400000 59.39 3,200,000 59.008751

450000 67.42 3,600,000 68.298875

500000 75.52 4,000,000 75.70731

1000000 159.01 8,000,000 157.261957

2000000 333.98 16,000,000 334.795543

3000000 514.96 24,000,000 517.361509

4000000 699.86 32,000,000 703.391089

5000000 887.67 40,000,000 891.316335

6000000 1,077.79 48,000,000 1083.557104

7000000 1,269.84 56,000,000 1283.913765

8000000 1,463.55 64,000,000 1476.87115

9000000 1,658.69 72,000,000 1667.943904

10000000 1,855.11 80,000,000 1871.688668

11000000 2,052.69 88,000,000 2045.491806

12000000 2,251.32 96,000,000 2236.672086

13000000 2,450.90 104,000,000 2454.59471

14000000 2,651.38 112,000,000 2664.525537

15000000 2,852.67 120,000,000 2872.963084

16000000 3,054.73 128,000,000 3040.425081

17000000 3,257.52 136,000,000 3251.834246

18000000 3,460.98 144,000,000 3465.23878

19000000 3,665.08 152,000,000 3664.355189

20000000 3,869.78 160,000,000 3876.868282

HEAP SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS

Page 15: Proyecto Final Algoritmia

15

F. Quick Sort

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes)

200,000,000 5,310.29 1,600,000,000

210,000,000 5,590.03 1,680,000,000

220,000,000 5,870.44 1,760,000,000

230,000,000 6,151.48 1,840,000,000

240,000,000 6,433.13 1,920,000,000

250,000,000 6,715.35 2,000,000,000

260,000,000 6,998.13 2,080,000,000

270,000,000 7,281.44 2,160,000,000

280,000,000 7,565.27 2,240,000,000

290,000,000 7,849.60 2,320,000,000

QUICK SORT ANALISIS TIEMPO ESPERADO

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes) Tiempo Real [segundos]

50000 0.75 400,000 0.847028

100000 1.60 800,000 1.824771

150000 2.48 1,200,000 2.832826

200000 3.39 1,600,000 3.731105

250000 4.32 2,000,000 5.130684

300000 5.26 2,400,000 5.11696

350000 6.21 2,800,000 7.175374

400000 7.17 3,200,000 7.118303

450000 8.14 3,600,000 7.786632

500000 9.11 4,000,000 10.091781

1000000 19.19 8,000,000 19.601449

2000000 40.31 16,000,000 37.427275

3000000 62.15 24,000,000 61.991381

4000000 84.47 32,000,000 86.950387

5000000 107.14 40,000,000 94.464484

6000000 130.08 48,000,000 128.081634

7000000 153.26 56,000,000 140.288425

8000000 176.64 64,000,000 160.905011

9000000 200.19 72,000,000 161.725994

10000000 223.90 80,000,000 214.513319

11000000 247.75 88,000,000 213.888123

12000000 271.72 96,000,000 274.421142

13000000 295.81 104,000,000 282.175751

14000000 320.00 112,000,000 339.369526

15000000 344.30 120,000,000 334.473732

16000000 368.69 128,000,000 320.688737

17000000 393.16 136,000,000 334.208801

18000000 417.72 144,000,000 427.172042

19000000 442.35 152,000,000 439.853189

20000000 467.06 160,000,000 506.296534

QUICK SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS

Page 16: Proyecto Final Algoritmia

16

G. Counting Sort

Los datos del couting sort no fueron posibles de tomar, el algoritmo funciono bien, pero los tiempos fueron

demasiado largos, por lo tanto no lo pudimos implementar.

H. Selection Sort

I. Heapinsert Sort.

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes)

200,000,000 243,286,331.88 1,600,000,000

210,000,000 268,223,180.90 1,680,000,000

220,000,000 294,376,461.58 1,760,000,000

230,000,000 321,746,173.92 1,840,000,000

240,000,000 350,332,317.91 1,920,000,000

250,000,000 380,134,893.57 2,000,000,000

260,000,000 411,153,900.88 2,080,000,000

270,000,000 443,389,339.86 2,160,000,000

280,000,000 476,841,210.49 2,240,000,000

290,000,000 511,509,512.78 2,320,000,000

SELECTION SORT ANALISIS TIEMPO ESPERADO

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes) Tiempo Real [segundos]

50000 15.21 400,000 15.325864

100000 60.82 800,000 60.836257

150000 136.85 1,200,000 136.280917

200000 243.29 1,600,000 241.885267

250000 380.13 2,000,000 379.624277

300000 547.39 2,400,000 547.290854

350000 745.06 2,800,000 748.140632

400000 973.15 3,200,000 974.19005

450000 1,231.64 3,600,000 1223.397518

500000 1,520.54 4,000,000 1527.781232

SELECTION SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes)

200,000,000 253,470,511.56 1,600,000,000

210,000,000 279,451,238.99 1,680,000,000

220,000,000 306,699,318.98 1,760,000,000

230,000,000 335,214,751.53 1,840,000,000

240,000,000 364,997,536.64 1,920,000,000

250,000,000 396,047,674.31 2,000,000,000

260,000,000 428,365,164.53 2,080,000,000

270,000,000 461,950,007.31 2,160,000,000

280,000,000 496,802,202.65 2,240,000,000

290,000,000 532,921,750.55 2,320,000,000

HEAPINSERT SORT ANALISIS TIEMPO ESPERADO

Page 17: Proyecto Final Algoritmia

17

Entrada (n) Tiempo Estimado [segundos] Espacio en Memoria (Bytes) Tiempo Real [segundos]

50000 15.84 400,000 16.164777

100000 63.37 800,000 63.876305

150000 142.58 1,200,000 142.85952

200000 253.47 1,600,000 252.1816

250000 396.05 2,000,000 395.690399

300000 570.31 2,400,000 567.880046

350000 776.25 2,800,000 775.62774

400000 1,013.88 3,200,000 1004.564346

450000 1,283.19 3,600,000 1274.276897

500000 1,584.19 4,000,000 1579.125579

HEAPINSERT SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS

Page 18: Proyecto Final Algoritmia

18

VI. GRÁFICOS DE TAMAÑO DE ENTRADA VERSUS TIEMPO DE EJECUCIÓN

Graficas en plano cartesiano, el tiempo de ejecución (eje y) versus el tamaño de la entrada (eje x), de cada uno

de los algoritmos, donde se muestra que efectivamente la gráfica es el g(n) de la complejidad del algoritmo.

Adicionalmente para las ejecuciones con entradas de 50.000 a 500.000 se presentan las graficas en un solo

plano cartesiano con todos los tiempos de ejecución para todos los algoritmos, de igual forma se hace lo

mismo para los algoritmos que se corren con entradas superiores a 1’000.000.

A. Insertion Sort

Page 19: Proyecto Final Algoritmia

19

B. Binary Insertion Sort

Page 20: Proyecto Final Algoritmia

20

C. Merge Sort

Page 21: Proyecto Final Algoritmia

21

D. Heap Sort

Page 22: Proyecto Final Algoritmia

22

E. Quick Sort

Page 23: Proyecto Final Algoritmia

23

F. Counting Sort

Los datos del couting sort no fueron posibles de tomar, el algoritmo funciono bien, pero los tiempos fueron

demasiado largos, por lo tanto no lo pudimos implementar.

G. Bubble Sort

Page 24: Proyecto Final Algoritmia

24

H. Selection Sort

Page 25: Proyecto Final Algoritmia

25

I. Heapinsert Sort.

Page 26: Proyecto Final Algoritmia

26

J. Ejecuciones con entradas de 50.000 a 500.000.

K. Ejecuciones con entradas superiores a 1’000.000.

Page 27: Proyecto Final Algoritmia

27

VII. CONCLUSIONES

Al analizar las gráficas de los algoritmos de ordenamiento n2 se observa que presentan una curva

característica parabólica, es decir y = Cx2, lo que concuerda con la complejidad teórica obtenida. Por otro

lado, para entradas de datos elevadas su comportamiento es lineal (y = mx), debido a que para valores de n

muy grande la velocidad con que crece la parábola es muy alta haciendo que su abertura no cambie.

Comparando los tiempos de ejecución para la misma cantidad de datos, podemos observar que los 5

algoritmos de complejidad n2 desde el más lento hasta el más rápido son: bubble sort, insertion sort, binary

insertion sort, heapInsertion sort y selection sort, respectivamente. La relación aproximada en velocidad es 3

a 1 entre el algoritmo más veloz y el más lento, y está dada por el factor constante de cada uno de ellos.

Los algoritmos de ordenamiento con complejidad n*lg10n presentan una curva característica que se aproxima

a una línea recta y = mx, con pendiente m = lg10n. Para entradas de datos muy grandes el logaritmo de n es

casi constante y la aproximación a una recta es cada vez mejor.

El comportamiento obtenido con el algoritmo Merge Sort es el de un n2 y a priori ello obedece a que Matlab

es un lenguaje de programación que no está diseñado para trabajar con algoritmos recursivos que demandan

altos recursos de memoria.

Los tiempos esperados de ejecución que fueron calculados para cada uno de los algoritmos mostraron el

comportamiento esperado, a excepción del algoritmo quick sort, que aunque sigue una tendencia lineal

muestra cierta varianza entre cada uno de los diferentes tamaños de los vectores.

En los algoritmos que ordenan en “el lugar”, el cálculo de consumo de memoria es directo debido a que está

relacionada directamente con el tamaño n del vector a ordenar. Los algoritmos que requieren mayor consumo

de memoria son Couting Sort y Merge Sort puesto que son algoritmos que requieren hacer copias de sub-

vectores.

Gracias a que se emplearon enteros de 8 bytes para representar los datos, en todos los algoritmos se

obtuvieron tiempos de ordenamiento elevados como resultado del proceso interno que debe hacer el

computador para comparar dos enteros de mayor longitud. Por su parte, la carga computacional impuesta por

Matlab también aporta a que los tiempos sean altos.

Para nuestro desarrollo utilizamos la herramienta Matlab. Se escogió ya que en un principio se pensó en su

gran versatilidad para la simulación, pero hemos comparado nuestros resultados con los de otros grupos y

hemos podido evidenciar que para este tipo de trabajo no es tan eficiente como si lo son lenguajes de

programación como C++ o Java.