- Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathqsort.py
More file actions
Latest commit
29 lines (22 loc) · 762 Bytes
/
Copy pathqsort.py
File metadata and controls
29 lines (22 loc) · 762 Bytes
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
defqsort(arr):
iflen(arr) <=1:
returnarr
else:
returnqsort([xforxinarr[1:] ifx<arr[0]]) + [arr[0]] +qsort([xforxinarr[1:] ifx>=arr[0]])
defpartition(array, begin, end):
pivot=begin
foriinxrange(begin+1, end+1):
ifarray[i] <=array[begin]:
pivot+=1
array[i], array[pivot] =array[pivot], array[i]
array[pivot], array[begin] =array[begin], array[pivot]
returnpivot
defquicksort(array, begin=0, end=None):
ifendisNone:
end=len(array) -1
ifbegin>=end:
return
pivot=partition(array, begin, end)
quicksort(array, begin, pivot-1)
quicksort(array, pivot+1, end)
qsort([1, 23, 10, -9]) ==qsort([1, 23, 10, -9])