Professional Documents
Culture Documents
1 Practica 3
Adriana Valadez Squivias Se crea una funcion de devuelve un arreglo de numeros aleatorios
def getRandomNumbers(size):
return [randint(0,200)for _ in range(size)]
[2]: randomNumbers=getRandomNumbers(5)
ascendentNumbers = sorted(randomNumbers)
descendentNumbers = sorted(randomNumbers, reverse = True)
1
complexCount += 1
data, cmplx = countingSort(lista, exp)
exp *= 10
complexCount += cmplx
return lista, complexCount
def radix_sort(lista):
complexCount = 0 # 2
radix = 10 # 2
placement = 1 # 2
maxDigit = max(lista) # 3
while placement < maxDigit: # 2m-2
complexCount += 1 # 2
buckets = [list() for _ in range(radix)] # 5 =90m-90
for i in lista: # 2n (2m-2) = 4mn-4n
complexCount += 1 # 2 (4mn-4n) = 8mn-8n
tmp = int((i/placement) % radix) # 8 (4mn-4n) = 32mn-32n
buckets[tmp].append(i) # 5 (4mn-4n) = 20mn-20n
a = 0 # 2 (2m-2) = 4m-4
for b in range(radix): # 3,(2m-2) = 6m-6
complexCount += 1 # 2,(6m-6) = 12m-12
buck = buckets[b] # 4,(6m-6) = 24m-24
for i in buck: # 2,(6m-6) = 12m-12
lista[a] = i # 4,(12m-12) = 48m-48
a += 1 # 2,(12m-12) = 24m-24
placement *= radix # 3,(6m-6) = 18m-18
return lista
2
1.1 Radix sort caso intermedio (aleatorio)
[6]: performance = []
for x in range(startCount,endCount,stepCount):
print("radix sort:")
start = time.time() #O(1)
print(x)
radix_sort(getRandomNumbers(x)) #O(n2)
end = time.time() #O(1)
performance.append(end - start) #O(1)
print(performance)
radix sort:
1000
radix sort:
1300
radix sort:
1600
radix sort:
1900
radix sort:
2200
radix sort:
2500
radix sort:
2800
radix sort:
3100
radix sort:
3400
radix sort:
3700
radix sort:
4000
radix sort:
4300
radix sort:
4600
radix sort:
4900
[0.0039713382720947266, 0.008944272994995117, 0.0069425106048583984,
0.007922172546386719, 0.008938074111938477, 0.009933710098266602,
0.011919975280761719, 0.011919021606445312, 0.012911319732666016,
0.015893936157226562, 0.016887426376342773, 0.01787877082824707,
0.017881155014038086, 0.019867658615112305]
3
[7]: plt.plot(performance)
plt.title("Caso aleatorio Radix sort")
print(performance)
radix sort
1000
radix sort
1300
radix sort
1600
4
radix sort
1900
radix sort
2200
radix sort
2500
radix sort
2800
radix sort
3100
radix sort
3400
radix sort
3700
radix sort
4000
radix sort
4300
radix sort
4600
radix sort
4900
[0.001987457275390625, 0.0039560794830322266, 0.006951332092285156,
0.004966259002685547, 0.0039713382720947266, 0.004946231842041016,
0.006952762603759766, 0.006957054138183594, 0.0079498291015625,
0.008939743041992188, 0.00894021987915039, 0.009932756423950195,
0.009932756423950195, 0.01092672348022461]
[9]: plt.plot(performance)
plt.title("Mejor caso Radix sort")
5
1.3 Radix sort Peor caso (Descendente)
[10]: performance = []
for x in range(startCount,endCount,stepCount):
descendantNumbers = sorted(getRandomNumbers(x), reverse = True)
print("radix sort")
start = time.time()
print(x)
radix_sort(descendantNumbers)
end = time.time()
performance.append(end - start)
print(performance)
radix sort
1000
radix sort
1300
radix sort
1600
radix sort
1900
radix sort
2200
radix sort
6
2500
radix sort
2800
radix sort
3100
radix sort
3400
radix sort
3700
radix sort
4000
radix sort
4300
radix sort
4600
radix sort
4900
[0.0029807090759277344, 0.002961397171020508, 0.004987239837646484,
0.0049591064453125, 0.0049664974212646484, 0.0059816837310791016,
0.004085540771484375, 0.010022878646850586, 0.015645265579223633,
0.015619516372680664, 0.015620708465576172, 0.015619993209838867,
0.01561880111694336, 0.0]
[11]: plt.plot(performance)
plt.title("Peor caso Radix sort")
7
[12]: def counting_sort(lista):
maxValue = 0
for i in range(len(lista)):
if lista[i] > maxValue:
maxValue = lista[i]
for i in lista:
buckets[i] += 1
i = 0
for j in range(maxValue + 1):
for a in range(buckets[j]):
lista[i] = j
i += 1
return lista
Counting sort:
5
[146, 119, 186, 43, 41]
[41, 43, 119, 146, 186]
print(performance)
Couting sort:
1000
8
Couting sort:
1300
Couting sort:
1600
Couting sort:
1900
Couting sort:
2200
Couting sort:
2500
Couting sort:
2800
Couting sort:
3100
Couting sort:
3400
Couting sort:
3700
Couting sort:
4000
Couting sort:
4300
Couting sort:
4600
Couting sort:
4900
[0.0059587955474853516, 0.002972126007080078, 0.0039751529693603516,
0.003973245620727539, 0.00496673583984375, 0.007946968078613281,
0.010926246643066406, 0.009007930755615234, 0.010890960693359375,
0.005007028579711914, 0.013551712036132812, 0.011920690536499023,
0.011919021606445312, 0.010915040969848633]
[15]: plt.plot(performance)
plt.title("Caso intermedio Couting sort")
9
1.5 Couting sort mejor caso
[16]: performance = []
for x in range(startCount,endCount,stepCount):
ascendentNumbers = sorted(getRandomNumbers(x))
print("Couting sort:")
print(x)
start = time.time()
counting_sort(ascendentNumbers)
end = time.time()
performance.append(end - start)
print(performance)
Couting sort:
1000
Couting sort:
1300
Couting sort:
1600
Couting sort:
1900
Couting sort:
2200
Couting sort:
10
2500
Couting sort:
2800
Couting sort:
3100
Couting sort:
3400
Couting sort:
3700
Couting sort:
4000
Couting sort:
4300
Couting sort:
4600
Couting sort:
4900
[0.0, 0.0009922981262207031, 0.0009758472442626953, 0.0009930133819580078,
0.0009932518005371094, 0.0009927749633789062, 0.0009937286376953125,
0.001986980438232422, 0.0009925365447998047, 0.0009932518005371094,
0.0019867420196533203, 0.000993967056274414, 0.002005338668823242,
0.001986980438232422]
[17]: plt.plot(performance)
plt.title("Mejor caso Couting sort")
11
1.6 Couting sort peor caso
[18]: performance = []
for x in range(startCount,endCount,stepCount):
descendantNumbers = sorted(getRandomNumbers(x), reverse = True)
print("Couting sort:")
print(x)
start = time.time()
counting_sort(descendantNumbers)
end = time.time()
performance.append(end - start)
print(performance)
Couting sort:
1000
Couting sort:
1300
Couting sort:
1600
Couting sort:
1900
Couting sort:
2200
Couting sort:
2500
Couting sort:
2800
Couting sort:
3100
Couting sort:
3400
Couting sort:
3700
Couting sort:
4000
Couting sort:
4300
Couting sort:
4600
Couting sort:
4900
[0.0, 0.0009906291961669922, 0.0009953975677490234, 0.001985788345336914,
0.0009913444519042969, 0.003973245620727539, 0.0019881725311279297,
0.0019860267639160156, 0.0029795169830322266, 0.0019872188568115234,
12
0.001983642578125, 0.0019867420196533203, 0.0029773712158203125,
0.0029785633087158203]
[19]: plt.plot(performance)
plt.title("Peor caso Couting sort")
13