Vous êtes sur la page 1sur 27

Sebastin Arboleda D.

Nstor lzate Meja


Ian Pastrana
Jorge Ivn Montealegre Rondn

ALGORITMOS DE
ORDENACION
Maestra en Ingeniera de Sistemas y
Computo
10/08/2012

Contenido
Resumen ............................................................................................................................................................. 5
Abstract .............................................................................................................................................................. 5
I.

INTRODUCCION ..................................................................................................................................... 5

II.

OBJETIVOS .............................................................................................................................................. 5

III.

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

A.

Nmeros a ordenar: ............................................................................................................................... 6

B.

Tamaos 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 SEGN 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.

GRFICOS DE TAMAO DE ENTRADA VERSUS TIEMPO DE EJECUCIN ......................... 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

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 1000.000. .......................................................................... 26

VII.

CONCLUSIONES .............................................................................................................................. 27

RESUMEN
El presente documento presenta la implementacin 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 computacin 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.

Adems, hay que tener en cuenta que dichos algoritmos son estn 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
Insertion Sort
Binary Insertion Sort
Merge Sort
Heap Sort
Quick Sort
Counting Sort
Bubble Sort
Selection Sort
Heapinsert Sort.

Complejidad
(n2)
(n2)
(n log n)
(n log n)
(n log n)
(n)
(n2)
(n2)
(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 tcnica de programacin de divide y vencers en los algoritmos de 0rdenamientode Merge


Sort y Quick Sort.

Escoger un lenguaje de programacin y unas estructuras de datos para la implementacin de los


diferentes algoritmos de ordenamiento.

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

III. DESCRIPCION DE LOS DATOS A ORDENAR


A. Nmeros a ordenar:
Este proyecto est destinado a ordenar nmeros enteros sin signo generados aleatoriamente entre 0 (cero) y
6000.000 (seis millones). Cada nmero debe tener la misma probabilidad de aparicin.
B. Tamaos de las entradas:
Todos los algoritmos de ordenamiento se tienen que probar (correr) con entradas de tamao: 50.000, 100.000,
150.000, 200.000, 250.000, 300.000, 350.000, 400.000, 450.000 y 500.000. Para estos tamaos 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
tamaos de las entradas son:1000.000, 2000.000, 3000.000, 4000.000, 5000.000, 6000.000, 7000.000,
8000.000, ..., 20000.000. Con estos tamaos de entrada se deben calcular los factores constantes para estos
algoritmos.

IV. ANALISIS EN TIEMPO REAL

A continuacin se presentan los datos de los tiempos de ejecucin, consumo de espacio de almacenamiento y
factores constantes que fueron tomados durante la prctica para cada uno de los algoritmos.
A. Insertion Sort

Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000

INSERTION SORT ANALISIS TIEMPO REAL


Tiempo Real [segundos]
Espacio en Memoria (Bytes)
35.137522
400,000
141.818339
800,000
319.444238
1,200,000
564.244274
1,600,000
881.916429
2,000,000
1275.64653
2,400,000
1734.490016
2,800,000
2273.353243
3,200,000
2854.472705
3,600,000
3542.149608
4,000,000
PROMEDIO FACTOR CONSTANTE =

Complejidad (n^2)
2500000000
10000000000
22500000000
40000000000
62500000000
90000000000
1.225E+11
1.6E+11
2.025E+11
2.5E+11

Factor Constante
1.4055E-08
1.41818E-08
1.41975E-08
1.41061E-08
1.41107E-08
1.41739E-08
1.41591E-08
1.42085E-08
1.40962E-08
1.41686E-08
1.41457E-08

B. Binary Insertion Sort

Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000

BINARY INSERTION SORT ANALISIS TIEMPO REAL


Tiempo Real [segundos]
Espacio en Memoria (Bytes)
Complejidad (n^2)
34.42576
400,000
2500000000
136.576452
800,000
10000000000
306.557098
1,200,000
22500000000
549.02097
1,600,000
40000000000
856.073595
2,000,000
62500000000
1223.861496
2,400,000
90000000000
1662.585207
2,800,000
1.225E+11
2200.656242
3,200,000
1.6E+11
2757.416428
3,600,000
2.025E+11
3407.500392
4,000,000
2.5E+11
PROMEDIO FACTOR CONSTANTE =

Factor Constante
1.37703E-08
1.36576E-08
1.36248E-08
1.37255E-08
1.36972E-08
1.35985E-08
1.35721E-08
1.37541E-08
1.36169E-08
1.363E-08
1.36647E-08

C. Merge Sort

Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000
1000000

MERGE SORT ANALISIS TIEMPO REAL


Tiempo Real [segundos]
Espacio en Memoria (Bytes)
6.108123
400,000
20.789145
800,000
42.956784
1,200,000
74.379011
1,600,000
119.086044
2,000,000
184.127953
2,400,000
272.138469
2,800,000
363.766679
3,200,000
476.723519
3,600,000
592.964795
4,000,000
2209.218212
8,000,000
PROMEDIO FACTOR CONSTANTE =

Complejidad (n Log n)
234948.5002
500000
776413.6889
1060205.999
1349485.002
1643136.376
1940423.816
2240823.997
2543945.631
2849485.002
6000000

Factor Constante
2.59977E-05
4.15783E-05
5.53272E-05
7.01552E-05
8.82455E-05
0.000112059
0.000140247
0.000162336
0.000187395
0.000208095
0.000368203
0.000132695

D. Heap Sort

Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000
1000000
2000000
3000000
4000000
5000000
6000000
7000000
8000000
9000000
10000000
11000000
12000000
13000000
14000000
15000000
16000000
17000000
18000000
19000000
20000000

HEAP SORT ANALISIS TIEMPO REAL


Tiempo Real [segundos]
Espacio en Memoria (Bytes)
6.201938
400,000
13.098625
800,000
20.311432
1,200,000
28.180881
1,600,000
36.187559
2,000,000
43.966724
2,400,000
52.192144
2,800,000
59.008751
3,200,000
68.298875
3,600,000
75.70731
4,000,000
157.261957
8,000,000
334.795543
16,000,000
517.361509
24,000,000
703.391089
32,000,000
891.316335
40,000,000
1083.557104
48,000,000
1283.913765
56,000,000
1476.87115
64,000,000
1667.943904
72,000,000
1871.688668
80,000,000
2045.491806
88,000,000
2236.672086
96,000,000
2454.59471
104,000,000
2664.525537
112,000,000
2872.963084
120,000,000
3040.425081
128,000,000
3251.834246
136,000,000
3465.23878
144,000,000
3664.355189
152,000,000
3876.868282
160,000,000
PROMEDIO FACTOR CONSTANTE =

Complejidad (n Log n)
234948.5002
500000
776413.6889
1060205.999
1349485.002
1643136.376
1940423.816
2240823.997
2543945.631
2849485.002
6000000
12602059.99
19431363.76
26408239.97
33494850.02
40668907.5
47915686.28
55224719.9
62588182.58
70000000
77455319.54
84950174.95
92481263.58
100045792.5
107641368.9
115265919.7
122917631.7
130594905.1
138296318.4
146020599.9

Factor Constante
2.6397E-05
2.61973E-05
2.61606E-05
2.65806E-05
2.68158E-05
2.67578E-05
2.68973E-05
2.63335E-05
2.68476E-05
2.65688E-05
2.62103E-05
2.65667E-05
2.66251E-05
2.66353E-05
2.66105E-05
2.66434E-05
2.67953E-05
2.67429E-05
2.66495E-05
2.67384E-05
2.64087E-05
2.63292E-05
2.65415E-05
2.66331E-05
2.66901E-05
2.63775E-05
2.64554E-05
2.65343E-05
2.64964E-05
2.65501E-05
2.65016E-05

E. Selection Sort

Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000

SELECTION SORT ANALISIS TIEMPO REAL


Tiempo Real [segundos]
Espacio en Memoria (Bytes)
15.325864
400,000
60.836257
800,000
136.280917
1,200,000
241.885267
1,600,000
379.624277
2,000,000
547.290854
2,400,000
748.140632
2,800,000
974.19005
3,200,000
1223.397518
3,600,000
1527.781232
4,000,000
PROMEDIO FACTOR CONSTANTE =

Complejidad (n^2)
2500000000
10000000000
22500000000
40000000000
62500000000
90000000000
1.225E+11
1.6E+11
2.025E+11
2.5E+11

Factor Constante
6.13035E-09
6.08363E-09
6.05693E-09
6.04713E-09
6.07399E-09
6.08101E-09
6.10727E-09
6.08869E-09
6.04147E-09
6.11112E-09
6.08216E-09

F. Quick Sort

Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000
1000000
2000000
3000000
4000000
5000000
6000000
7000000
8000000
9000000
10000000
11000000
12000000
13000000
14000000
15000000
16000000
17000000
18000000
19000000
20000000

QUICK SORT ANALISIS TIEMPO REAL


Tiempo Real [segundos]
Espacio en Memoria (Bytes)
0.847028
400,000
1.824771
800,000
2.832826
1,200,000
3.731105
1,600,000
5.130684
2,000,000
5.11696
2,400,000
7.175374
2,800,000
7.118303
3,200,000
7.786632
3,600,000
10.091781
4,000,000
19.601449
8,000,000
37.427275
16,000,000
61.991381
24,000,000
86.950387
32,000,000
94.464484
40,000,000
128.081634
48,000,000
140.288425
56,000,000
160.905011
64,000,000
161.725994
72,000,000
214.513319
80,000,000
213.888123
88,000,000
274.421142
96,000,000
282.175751
104,000,000
339.369526
112,000,000
334.473732
120,000,000
320.688737
128,000,000
334.208801
136,000,000
427.172042
144,000,000
439.853189
152,000,000
506.296534
160,000,000
PROMEDIO FACTOR CONSTANTE =

Complejidad (n Log n)
234948.5002
500000
776413.6889
1060205.999
1349485.002
1643136.376
1940423.816
2240823.997
2543945.631
2849485.002
6000000
12602059.99
19431363.76
26408239.97
33494850.02
40668907.5
47915686.28
55224719.9
62588182.58
70000000
77455319.54
84950174.95
92481263.58
100045792.5
107641368.9
115265919.7
122917631.7
130594905.1
138296318.4
146020599.9

Factor Constante
3.60516E-06
3.64954E-06
3.6486E-06
3.51923E-06
3.80196E-06
3.11414E-06
3.69784E-06
3.17665E-06
3.06085E-06
3.54162E-06
3.26691E-06
2.96993E-06
3.19027E-06
3.29255E-06
2.82027E-06
3.14937E-06
2.92782E-06
2.91364E-06
2.58397E-06
3.06448E-06
2.76144E-06
3.23038E-06
3.05117E-06
3.39214E-06
3.1073E-06
2.78216E-06
2.71897E-06
3.27097E-06
3.18051E-06
3.4673E-06
3.19857E-06

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)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000

BUBBLE SORT ANALISIS TIEMPO REAL


Tiempo Real [segundos]
Espacio en Memoria (Bytes)
55.485609
400,000
221.847542
800,000
493.801013
1,200,000
879.00641
1,600,000
1381.523105
2,000,000
1994.94568
2,400,000
2705.325768
2,800,000
3530.178581
3,200,000
4410.715939
3,600,000
5533.220772
4,000,000
PROMEDIO FACTOR CONSTANTE =

Complejidad (n^2)
2500000000
10000000000
22500000000
40000000000
62500000000
90000000000
1.225E+11
1.6E+11
2.025E+11
2.5E+11

Factor Constante
2.21942E-08
2.21848E-08
2.19467E-08
2.19752E-08
2.21044E-08
2.21661E-08
2.20843E-08
2.20636E-08
2.17813E-08
2.21329E-08
2.20633E-08

I. Heapinsert Sort.

Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000

HEAPINSERT SORT ANALISIS TIEMPO REAL


Tiempo Real [segundos]
Espacio en Memoria (Bytes)
16.164777
400,000
63.876305
800,000
142.85952
1,200,000
252.1816
1,600,000
395.690399
2,000,000
567.880046
2,400,000
775.62774
2,800,000
1004.564346
3,200,000
1274.276897
3,600,000
1579.125579
4,000,000
PROMEDIO FACTOR CONSTANTE =

10

Complejidad (n^2)
2500000000
10000000000
22500000000
40000000000
62500000000
90000000000
1.225E+11
1.6E+11
2.025E+11
2.5E+11

Factor Constante
6.46591E-09
6.38763E-09
6.34931E-09
6.30454E-09
6.33105E-09
6.30978E-09
6.33166E-09
6.27853E-09
6.29273E-09
6.3165E-09
6.33676E-09

V. TIEMPOS DE EJECUCION ESPERADOS SEGN EL FACTOR CONSTANTE

Con los factores constantes de cada uno de los algoritmos se infieren los tiempos de ejecucin para cada uno
de ellos con entradas de tamao: 200000.000, 210000.000, 220000.000,... , 290000.000.
A continuacin se presentan los datos inferidos a partir de los factores constantes y se comparan con los
tiempos tomados en tiempo real de ejecucin.
A. Insertion Sort

Entrada (n)
200,000,000
210,000,000
220,000,000
230,000,000
240,000,000
250,000,000
260,000,000
270,000,000
280,000,000
290,000,000
Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000

INSERTION SORT ANALISIS TIEMPO ESPERADO


Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
565,829,217.26
1,600,000,000
623,826,712.03
1,680,000,000
684,653,352.88
1,760,000,000
748,309,139.82
1,840,000,000
814,794,072.85
1,920,000,000
884,108,151.97
2,000,000,000
956,251,377.17
2,080,000,000
1,031,223,748.45
2,160,000,000
1,109,025,265.83
2,240,000,000
1,189,655,929.29
2,320,000,000
INSERTION SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS
Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
Tiempo Real [segundos]
35.36
400,000
35.137522
141.46
800,000
141.818339
318.28
1,200,000
319.444238
565.83
1,600,000
564.244274
884.11
2,000,000
881.916429
1,273.12
2,400,000
1275.64653
1,732.85
2,800,000
1734.490016
2,263.32
3,200,000
2273.353243
2,864.51
3,600,000
2854.472705
3,536.43
4,000,000
3542.149608

11

B. Binary Insertion Sort

Entrada (n)
200,000,000
210,000,000
220,000,000
230,000,000
240,000,000
250,000,000
260,000,000
270,000,000
280,000,000
290,000,000
Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000

BINARY INSERTION SORT ANALISIS TIEMPO ESPERADO


Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
546,587,881.67
1,600,000,000
602,613,139.54
1,680,000,000
661,371,336.82
1,760,000,000
722,862,473.50
1,840,000,000
787,086,549.60
1,920,000,000
854,043,565.10
2,000,000,000
923,733,520.02
2,080,000,000
996,156,414.34
2,160,000,000
1,071,312,248.06
2,240,000,000
1,149,201,021.20
2,320,000,000
BINARY INSERTION SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS
Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
Tiempo Real [segundos]
34.16
400,000
34.42576
136.65
800,000
136.576452
307.46
1,200,000
306.557098
546.59
1,600,000
549.02097
854.04
2,000,000
856.073595
1,229.82
2,400,000
1223.861496
1,673.93
2,800,000
1662.585207
2,186.35
3,200,000
2200.656242
2,767.10
3,600,000
2757.416428
3,416.17
4,000,000
3407.500392

C. Merge Sort

Entrada (n)
200,000,000
210,000,000
220,000,000
230,000,000
240,000,000
250,000,000
260,000,000
270,000,000
280,000,000
290,000,000

MERGE SORT ANALISIS TIEMPO ESPERADO


Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
220,300.23
1,600,000,000
231,905.70
1,680,000,000
243,538.62
1,760,000,000
255,197.74
1,840,000,000
266,881.93
1,920,000,000
278,590.14
2,000,000,000
290,321.41
2,080,000,000
302,074.84
2,160,000,000
313,849.63
2,240,000,000
325,645.00
2,320,000,000

12

Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000
1000000

MERGE SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS


Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
Tiempo Real [segundos]
31.18
400,000
6.108123
66.35
800,000
20.789145
103.03
1,200,000
42.956784
140.68
1,600,000
74.379011
179.07
2,000,000
119.086044
218.04
2,400,000
184.127953
257.48
2,800,000
272.138469
297.35
3,200,000
363.766679
337.57
3,600,000
476.723519
378.11
4,000,000
592.964795
796.17
8,000,000
2209.218212

D. Bubble Sort

Entrada (n)
200,000,000
210,000,000
220,000,000
230,000,000
240,000,000
250,000,000
260,000,000
270,000,000
280,000,000
290,000,000

Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000

BUBBLE SORT ANALISIS TIEMPO ESPERADO


Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
882,533,628.05
1,600,000,000
972,993,324.92
1,680,000,000
1,067,865,689.94
1,760,000,000
1,167,150,723.09
1,840,000,000
1,270,848,424.39
1,920,000,000
1,378,958,793.82
2,000,000,000
1,491,481,831.40
2,080,000,000
1,608,417,537.12
2,160,000,000
1,729,765,910.97
2,240,000,000
1,855,526,952.97
2,320,000,000
BUBBLE SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS
Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
Tiempo Real [segundos]
55.16
400,000
55.485609
220.63
800,000
221.847542
496.43
1,200,000
493.801013
882.53
1,600,000
879.00641
1,378.96
2,000,000
1381.523105
1,985.70
2,400,000
1994.94568
2,702.76
2,800,000
2705.325768
3,530.13
3,200,000
3530.178581
4,467.83
3,600,000
4410.715939
5,515.84
4,000,000
5533.220772

13

E. Heap Sort

Entrada (n)
200,000,000
210,000,000
220,000,000
230,000,000
240,000,000
250,000,000
260,000,000
270,000,000
280,000,000
290,000,000

Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000
1000000
2000000
3000000
4000000
5000000
6000000
7000000
8000000
9000000
10000000
11000000
12000000
13000000
14000000
15000000
16000000
17000000
18000000
19000000
20000000

HEAP SORT ANALISIS TIEMPO ESPERADO


Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
43,998.17
1,600,000,000
46,316.00
1,680,000,000
48,639.32
1,760,000,000
50,967.87
1,840,000,000
53,301.42
1,920,000,000
55,639.78
2,000,000,000
57,982.73
2,080,000,000
60,330.12
2,160,000,000
62,681.77
2,240,000,000
65,037.53
2,320,000,000
HEAP SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS
Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
Tiempo Real [segundos]
6.23
400,000
6.201938
13.25
800,000
13.098625
20.58
1,200,000
20.311432
28.10
1,600,000
28.180881
35.76
2,000,000
36.187559
43.55
2,400,000
43.966724
51.42
2,800,000
52.192144
59.39
3,200,000
59.008751
67.42
3,600,000
68.298875
75.52
4,000,000
75.70731
159.01
8,000,000
157.261957
333.98
16,000,000
334.795543
514.96
24,000,000
517.361509
699.86
32,000,000
703.391089
887.67
40,000,000
891.316335
1,077.79
48,000,000
1083.557104
1,269.84
56,000,000
1283.913765
1,463.55
64,000,000
1476.87115
1,658.69
72,000,000
1667.943904
1,855.11
80,000,000
1871.688668
2,052.69
88,000,000
2045.491806
2,251.32
96,000,000
2236.672086
2,450.90
104,000,000
2454.59471
2,651.38
112,000,000
2664.525537
2,852.67
120,000,000
2872.963084
3,054.73
128,000,000
3040.425081
3,257.52
136,000,000
3251.834246
3,460.98
144,000,000
3465.23878
3,665.08
152,000,000
3664.355189
3,869.78
160,000,000
3876.868282

14

F. Quick Sort

Entrada (n)
200,000,000
210,000,000
220,000,000
230,000,000
240,000,000
250,000,000
260,000,000
270,000,000
280,000,000
290,000,000

Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000
1000000
2000000
3000000
4000000
5000000
6000000
7000000
8000000
9000000
10000000
11000000
12000000
13000000
14000000
15000000
16000000
17000000
18000000
19000000
20000000

QUICK SORT ANALISIS TIEMPO ESPERADO


Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
5,310.29
1,600,000,000
5,590.03
1,680,000,000
5,870.44
1,760,000,000
6,151.48
1,840,000,000
6,433.13
1,920,000,000
6,715.35
2,000,000,000
6,998.13
2,080,000,000
7,281.44
2,160,000,000
7,565.27
2,240,000,000
7,849.60
2,320,000,000
QUICK SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS
Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
Tiempo Real [segundos]
0.75
400,000
0.847028
1.60
800,000
1.824771
2.48
1,200,000
2.832826
3.39
1,600,000
3.731105
4.32
2,000,000
5.130684
5.26
2,400,000
5.11696
6.21
2,800,000
7.175374
7.17
3,200,000
7.118303
8.14
3,600,000
7.786632
9.11
4,000,000
10.091781
19.19
8,000,000
19.601449
40.31
16,000,000
37.427275
62.15
24,000,000
61.991381
84.47
32,000,000
86.950387
107.14
40,000,000
94.464484
130.08
48,000,000
128.081634
153.26
56,000,000
140.288425
176.64
64,000,000
160.905011
200.19
72,000,000
161.725994
223.90
80,000,000
214.513319
247.75
88,000,000
213.888123
271.72
96,000,000
274.421142
295.81
104,000,000
282.175751
320.00
112,000,000
339.369526
344.30
120,000,000
334.473732
368.69
128,000,000
320.688737
393.16
136,000,000
334.208801
417.72
144,000,000
427.172042
442.35
152,000,000
439.853189
467.06
160,000,000
506.296534

15

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

Entrada (n)
200,000,000
210,000,000
220,000,000
230,000,000
240,000,000
250,000,000
260,000,000
270,000,000
280,000,000
290,000,000
Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000

SELECTION SORT ANALISIS TIEMPO ESPERADO


Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
243,286,331.88
1,600,000,000
268,223,180.90
1,680,000,000
294,376,461.58
1,760,000,000
321,746,173.92
1,840,000,000
350,332,317.91
1,920,000,000
380,134,893.57
2,000,000,000
411,153,900.88
2,080,000,000
443,389,339.86
2,160,000,000
476,841,210.49
2,240,000,000
511,509,512.78
2,320,000,000
SELECTION SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS
Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
Tiempo Real [segundos]
15.21
400,000
15.325864
60.82
800,000
60.836257
136.85
1,200,000
136.280917
243.29
1,600,000
241.885267
380.13
2,000,000
379.624277
547.39
2,400,000
547.290854
745.06
2,800,000
748.140632
973.15
3,200,000
974.19005
1,231.64
3,600,000
1223.397518
1,520.54
4,000,000
1527.781232

I. Heapinsert Sort.

Entrada (n)
200,000,000
210,000,000
220,000,000
230,000,000
240,000,000
250,000,000
260,000,000
270,000,000
280,000,000
290,000,000

HEAPINSERT SORT ANALISIS TIEMPO ESPERADO


Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
253,470,511.56
1,600,000,000
279,451,238.99
1,680,000,000
306,699,318.98
1,760,000,000
335,214,751.53
1,840,000,000
364,997,536.64
1,920,000,000
396,047,674.31
2,000,000,000
428,365,164.53
2,080,000,000
461,950,007.31
2,160,000,000
496,802,202.65
2,240,000,000
532,921,750.55
2,320,000,000
16

Entrada (n)
50000
100000
150000
200000
250000
300000
350000
400000
450000
500000

HEAPINSERT SORT ANALISIS TIEMPO ESPERADO DE LOS DATOS CONOCIDOS


Tiempo Estimado [segundos]
Espacio en Memoria (Bytes)
Tiempo Real [segundos]
15.84
400,000
16.164777
63.37
800,000
63.876305
142.58
1,200,000
142.85952
253.47
1,600,000
252.1816
396.05
2,000,000
395.690399
570.31
2,400,000
567.880046
776.25
2,800,000
775.62774
1,013.88
3,200,000
1004.564346
1,283.19
3,600,000
1274.276897
1,584.19
4,000,000
1579.125579

17

VI. GRFICOS DE TAMAO DE ENTRADA VERSUS TIEMPO DE EJECUCIN


Graficas en plano cartesiano, el tiempo de ejecucin (eje y) versus el tamao de la entrada (eje x), de cada uno
de los algoritmos, donde se muestra que efectivamente la grfica 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 ejecucin para todos los algoritmos, de igual forma se hace lo
mismo para los algoritmos que se corren con entradas superiores a 1000.000.
A. Insertion Sort

18

B. Binary Insertion Sort

19

C. Merge Sort

20

D. Heap Sort

21

E. Quick Sort

22

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

23

H. Selection Sort

24

I. Heapinsert Sort.

25

J. Ejecuciones con entradas de 50.000 a 500.000.

K. Ejecuciones con entradas superiores a 1000.000.

26

VII. CONCLUSIONES
Al analizar las grficas de los algoritmos de ordenamiento n2 se observa que presentan una curva
caracterstica parablica, es decir y = Cx2, lo que concuerda con la complejidad terica 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 parbola es muy alta haciendo que su abertura no cambie.
Comparando los tiempos de ejecucin para la misma cantidad de datos, podemos observar que los 5
algoritmos de complejidad n2 desde el ms lento hasta el ms rpido son: bubble sort, insertion sort, binary
insertion sort, heapInsertion sort y selection sort, respectivamente. La relacin aproximada en velocidad es 3
a 1 entre el algoritmo ms veloz y el ms lento, y est dada por el factor constante de cada uno de ellos.
Los algoritmos de ordenamiento con complejidad n*lg10n presentan una curva caracterstica que se aproxima
a una lnea recta y = mx, con pendiente m = lg10n. Para entradas de datos muy grandes el logaritmo de n es
casi constante y la aproximacin 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 programacin que no est diseado para trabajar con algoritmos recursivos que demandan
altos recursos de memoria.
Los tiempos esperados de ejecucin que fueron calculados para cada uno de los algoritmos mostraron el
comportamiento esperado, a excepcin del algoritmo quick sort, que aunque sigue una tendencia lineal
muestra cierta varianza entre cada uno de los diferentes tamaos de los vectores.
En los algoritmos que ordenan en el lugar, el clculo de consumo de memoria es directo debido a que est
relacionada directamente con el tamao 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 subvectores.
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 tambin 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 simulacin, 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
programacin como C++ o Java.

27

Vous aimerez peut-être aussi