Skip to content

Commit d8d297a

Browse files
fixed sorting tests
1 parent 3356a72 commit d8d297a

File tree

2 files changed

+12
-57
lines changed

2 files changed

+12
-57
lines changed

Algorithm_tests/sorting_tests/test_sorting.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from bubblesort import bubblesort
1313
from insertionsort import insertionsort
1414
from mergesort import merge_sort, merge
15-
from quicksort import quicksort_firstpivot
15+
from quicksort import quicksort_firstpivot, quicksort_lastpivot
1616
from randomized_quicksort import quicksort_randomized
1717
from selectionsort import selectionsort
1818

@@ -77,6 +77,16 @@ def test_quicksort(self):
7777
self.assertEqual(quicksort_firstpivot(L6), L6_sorted)
7878
self.assertEqual(quicksort_firstpivot(L7), L7_sorted)
7979

80+
self.assertEqual(quicksort_lastpivot(L1), L1_sorted)
81+
self.assertEqual(quicksort_lastpivot(L2), L2_sorted)
82+
self.assertEqual(quicksort_lastpivot(L3), L3_sorted)
83+
self.assertEqual(quicksort_lastpivot(L4), L4_sorted)
84+
self.assertEqual(quicksort_lastpivot(L5), L5_sorted)
85+
self.assertEqual(quicksort_lastpivot(L6), L6_sorted)
86+
self.assertEqual(quicksort_lastpivot(L7), L7_sorted)
87+
88+
89+
8090
def test_selectionsort(self):
8191
self.assertEqual(selectionsort(L1), L1_sorted)
8292
self.assertEqual(selectionsort(L2), L2_sorted)

Algorithms/sorting/quicksort.py

Lines changed: 1 addition & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -51,59 +51,4 @@ def quicksort_lastpivot(x):
5151
left.append(x[i])
5252

5353
result = left + right
54-
return result
55-
56-
def find_median(x):
57-
# this is horrible.
58-
59-
if len(x) % 2 == 0:
60-
middle_idx = len(x) // 2 - 1
61-
if len(x) % 2 != 0:
62-
middle_idx = len(x) // 2
63-
64-
a = x[0]
65-
b = x[middle_idx]
66-
c = x[-1]
67-
68-
if a > b:
69-
if a < c:
70-
median = 0
71-
elif b > c:
72-
median = middle_idx
73-
else:
74-
median = len(x) - 1
75-
else:
76-
if a > c:
77-
median = 0
78-
elif b < c:
79-
median = middle_idx
80-
else:
81-
median = len(x) - 1
82-
83-
return median
84-
85-
def quicksort_median(x):
86-
global count_comparisons
87-
88-
if len(x) <= 1:
89-
return x
90-
91-
k = find_median(x)
92-
x[0], x[k] = x[k], x[0]
93-
pivot = x[0]
94-
95-
count_comparisons += len(x) - 1
96-
97-
i = 0
98-
99-
for j in range(1, len(x)):
100-
if x[j] < pivot:
101-
x[j], x[i+1] = x[i+1], x[j]
102-
i += 1
103-
104-
x[0], x[i] = x[i], x[0]
105-
left = quicksort_median(x[:i])
106-
right = quicksort_median(x[i+1:])
107-
left.append(x[i])
108-
result = left + right
109-
return result
54+
return result

0 commit comments

Comments
 (0)