Skip to content

Commit dc619e0

Browse files
committed
Polished statistics gathering
1 parent 5410ce6 commit dc619e0

File tree

5 files changed

+18
-25
lines changed

5 files changed

+18
-25
lines changed

algorithms/heapSort.py

+14-21
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
from random import random
22

33

4-
def heapify(arr, n, i, comps, accesses):
4+
def heapify(arr, n, i):
5+
comps = 0
6+
accesses = 0
7+
58
largest = i
69
l = 2*i + 1
710
r = 2*i + 2
@@ -20,42 +23,32 @@ def heapify(arr, n, i, comps, accesses):
2023
if largest != i:
2124
accesses += 4
2225
arr[i], arr[largest] = arr[largest], arr[i]
23-
(comps, accesses) = heapify(arr, n, largest, comps, accesses)
26+
(comps1, accesses1) = heapify(arr, n, largest)
27+
comps += comps1
28+
accesses += accesses1
2429

2530
return (comps, accesses)
2631

2732

2833
def heap_sort(arr):
34+
additional_space = 0
2935
comparisons = 0
3036
array_accesses = 0
31-
additional_space = 0
3237

3338
n = len(arr)
34-
temp1 = 0
35-
temp2 = 0
3639
for i in range(n//2 - 1, -1, -1):
3740
(comparisons1, array_accesses1) = heapify(
38-
arr, n, i, comparisons, array_accesses)
39-
temp1 += comparisons1
40-
temp2 += array_accesses1
41-
comparisons += temp1
42-
array_accesses += temp2
41+
arr, n, i)
42+
comparisons += comparisons1
43+
array_accesses += array_accesses1
4344

44-
temp1 = 0
45-
temp2 = 0
4645
for i in range(n-1, 0, -1):
4746
array_accesses += 4
4847
arr[i], arr[0] = arr[0], arr[i]
4948
(comparisons2, array_accesses2) = heapify(
50-
arr, i, 0, comparisons, array_accesses)
51-
temp1 += comparisons2
52-
temp2 += array_accesses2
53-
54-
comparisons += temp1
55-
array_accesses += temp2
56-
57-
(comparisons, array_accesses) = (comparisons1 + comparisons2,
58-
array_accesses1 + array_accesses2)
49+
arr, i, 0)
50+
comparisons += comparisons2
51+
array_accesses += array_accesses2
5952

6053
print("Heap sort:")
6154
print("No. comparisons: " + str(comparisons) +

algorithms/insertionSort.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ def insertion_sort(arr):
99
array_accesses += 1
1010
chosenElem = arr[i]
1111
j = i - 1
12-
array_accesses += 1
1312
while j >= 0 and arr[j] > chosenElem:
1413
array_accesses += 2
1514
arr[j+1] = arr[j]
1615
j -= 1
1716
comparisons += 1
17+
array_accesses += 1
1818
comparisons += 1
1919
array_accesses += 1
2020
arr[j+1] = chosenElem

algorithms/mergeSort.py

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ def merge_sort(arr):
77
additional_space = 0
88
if len(arr) > 1:
99
array_accesses += len(arr)
10-
additional_space += len(arr)
1110
mid = len(arr)//2
1211
L = arr[:mid]
1312
R = arr[mid:]

algorithms/pigeonholeSort.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def pigeonhole_sort(arr):
99
additional_space = size
1010
holes = [0] * size
1111
for x in arr:
12-
array_accesses += 1
12+
array_accesses += 2
1313
holes[x - minimum] += 1
1414
i = 0
1515
for count in range(size):

algorithms/selectionSort.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ def selection_sort(arr):
88
for i in range(len(arr)):
99
minimum = i
1010
for j in range(i+1, len(arr)):
11-
array_accesses += 2
11+
array_accesses += 1
1212
comparisons += 1
1313
if arr[j] < arr[minimum]:
14+
array_accesses += 1
1415
minimum = j
1516
comparisons += 1
1617
if minimum != i:

0 commit comments

Comments
 (0)