- Notifications
You must be signed in to change notification settings - Fork 604
/
Copy pathquick_sort.py
39 lines (30 loc) · 911 Bytes
/
quick_sort.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
importrandom
classQuickSort(object):
def__init__(self, numbers):
self.values=numbers
self.count=len(self.values)
defsort(self):
self.quick_sort(0, self.count-1)
returnself.values
defquick_sort(self, left, right):
ifleft==right:
return
i=left
j=right
pivot_index=random.randint(left, right)
pivot=self.values[pivot_index]
whilei<j:
whileself.values[i] <pivot:
i+=1
whileself.values[j] >pivot:
j-=1
ifi<=j:
temp=self.values[i]
self.values[i] =self.values[j]
self.values[j] =temp
i+=1
j-=1
ifleft<j:
self.quick_sort(left, j)
ifright>i:
self.quick_sort(i, right)