1 def partition(start,end,array):
2 pivot=array[start]
3 left,right=start+1,end
4
5 while True:
6
7 while left<=right and array[left]<=pivot:
8 left+=1
9 while left <=right and pivot<=array[right]:
10 right-=1
11 if left<=right:
12 print(left,right,pivot,array[left],array[right])
13 array[left],array[right]=array[right],array[left]
14 else:
15 break
16 array[start],array[right] = array[right],array[start]
17
18 return right
19
20 def quick_sort(array,start,end):
21 if start>=end: return
22
23 p = partition(start,end,array)
24 quick_sort(array,start,p-1)
25 quick_sort(array,p+1,end)
26
27 array = [29,99,27,41,66,28,44,78,87,19,31,76,58,88,83,97,12,21,44]
28 quick_sort(array,0,len(array)-1)
29 print(array)