-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQuickSort.py
47 lines (34 loc) · 1.27 KB
/
QuickSort.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
40
41
42
43
44
45
46
47
###########################
# Author: Hemant Tripathi #
###########################
def main():
print('############### Quick Sort Program ####################')
dataArray = [25, 57, 48, 37, 12, 92, 86, 33]
quickSort(dataArray, 0, len(dataArray)-1)
print('####################### Result ##############################')
print('After quickSort operation completed, Array : ', dataArray)
def quickSort(dataArray, lowerBound, upperBound):
print('lowerBound = '+str(lowerBound)+'; upperBound = ', upperBound)
a = dataArray[lowerBound]
down = lowerBound
up = upperBound
while down < up:
while dataArray[down] <= a and down < upperBound:
down = down + 1
while dataArray[up] > a:
up = up - 1
if down < up:
#swap down and up position elements
tmp = dataArray[down]
dataArray[down] = dataArray[up]
dataArray[up] = tmp
#now swap a with upperBound eleemnt
dataArray[lowerBound] = dataArray[up]
dataArray[up] = a
print('After next iteration, array is : ', dataArray)
if down < upperBound:
quickSort(dataArray, up+1, upperBound)
if up > lowerBound:
quickSort(dataArray, lowerBound, up-1)
if __name__ == "__main__":
main()