Skip to content

Commit 41c5eca

Browse files
committed
Added more efficient Quicksort
1 parent b5f7a1c commit 41c5eca

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

Programs/P28_QuickSort.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
# done.
1010

1111
# Best = Average = O(nlog(n)); Worst = O(n^2
12+
import time
1213

1314
def quickSort(myList, start, end):
1415
if start < end:
@@ -27,10 +28,8 @@ def partition(myList, start, end):
2728
while not done:
2829
while left <= right and myList[left] <= pivot:
2930
left = left + 1
30-
print('Now left is:',left)
3131
while myList[right] >= pivot and right >=left:
3232
right = right -1
33-
print('now righht is:',right)
3433
if right < left:
3534
done= True
3635
else:
@@ -44,6 +43,23 @@ def partition(myList, start, end):
4443
myList[right]=temp
4544
return right
4645

46+
# A more efficient solution
47+
def quicksortBetter(arr):
48+
if len(arr) <= 1:
49+
return arr
50+
pivot = arr[len(arr) // 2]
51+
left = [x for x in arr if x < pivot]
52+
middle = [x for x in arr if x == pivot]
53+
right = [x for x in arr if x > pivot]
54+
return quicksortBetter(left) + middle + quicksortBetter(right)
55+
4756
if __name__ == '__main__':
4857
List = [3, 4, 2, 6, 5, 7, 1, 9]
58+
start = time.time()
4959
print('Sorted List:',quickSort(List, 0, len(List) - 1))
60+
stop = time.time()
61+
print('Time Required:', (stop - start))
62+
start = time.time()
63+
print('Sorted List:', quicksortBetter(List))
64+
stop = time.time()
65+
print('Time Required:', (stop - start))

0 commit comments

Comments
 (0)