8000 Minor changes to quicksort. Added new test cases. · iangon/practice-python@8028db7 · GitHub
[go: up one dir, main page]

Skip to content
Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 8028db7

Browse files
committed
Minor changes to quicksort. Added new test cases.
1 parent e6c80db commit 8028db7

File tree

2 files changed

+34
-23
lines changed

2 files changed

+34
-23
lines changed

quick_sort/main.py

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,27 @@ def is_sorted(numbers):
1313
return True
1414

1515

16+
def check_sort(original):
17+
numbers = original[:]
18+
19+
qs = QuickSort(numbers)
20+
output = qs.sort()
21+
22+
print(output)
23+
24+
if is_sorted(output):
25+
print("** SUCCESS! **")
26+
else:
27+
print("Uh oh - not in order.")
28+
29+
if contain_same_ints(original, numbers):
30+
print("** Contain the same elements! **")
31+
else:
32+
print("Uh oh - something is missing.")
33+
34+
print("---")
35+
36+
1637
def contain_same_ints(arr1, arr2):
1738
for i in arr1:
1839
found = False
@@ -24,29 +45,21 @@ def contain_same_ints(arr1, arr2):
2445

2546
return True
2647

48+
2749
def main():
28-
original = [325432, 989, 547510, 3, -93, 189019, 5042, 123,
50+
check_sort([325432, 989, 547510, 3, -93, 189019, 5042, 123,
2951
597, 42, 7506, 184, 184, 2409, 45, 824,
3052
4, -2650, 9, 662, 3928, -170, 45358, 395,
31-
842, 7697, 110, 14, 99, 221]
53+
842, 7697, 110, 14, 99, 221])
3254

33-
numbers = original[:]
55+
check_sort([9, 9, 9, 9, 9, 9, 9, 9, 9, 9])
3456

35-
qs = QuickSort(numbers)
36-
output = qs.sort()
57+
check_sort([3, 5, 7, 9, 23, 25, 34, 53, 77, 199])
3758

38-
if is_sorted(output):
39-
print("** SUCCESS! **")
40-
else:
41-
print("Uh oh - not in order.")
42-
43-
if contain_same_ints(original, numbers):
44-
print("** Contain the same elements! **")
45-
else:
46-
print("Uh oh - something is missing.")
47-
48-
print(output)
59+
check_sort([3, 5, 7])
60+
check_sort([3, 5])
61+
check_sort([3])
4962

5063

5164
if __name__ == "__main__":
52-
main()
65+
main()

quick_sort/quick_sort.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33

44
class QuickSort(object):
5-
65
def __init__(self, numbers):
76
self.values = numbers
87
self.count = len(self.values)
@@ -22,16 +21,15 @@ def quick_sort(self, left, right):
2221

2322
pivot = self.values[pivot_index]
2423

25-
while i <= j:
24+
while i < j:
2625
while self.values[i] < pivot:
2726
i += 1
2827
while self.values[j] > pivot:
2928
j -= 1
3029
if i <= j:
31-
if i < j:
32-
temp = self.values[i]
33-
self.values[i] = self.values[j]
34-
self.values[j] = temp
30+
temp = self.values[i]
31+
self.values[i] = self.values[j]
32+
self.values[j] = temp
3533
i += 1
3634
j -= 1
3735

0 commit comments

Comments
 (0)
0