You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
5 years ago
|
def quickSort(data_list):
|
||
|
quickSortHlp(data_list,0,len(data_list)-1)
|
||
|
|
||
|
def quickSortHlp(data_list,first,last):
|
||
|
if first < last:
|
||
|
|
||
|
splitpoint = partition(data_list,first,last)
|
||
|
|
||
|
quickSortHlp(data_list,first,splitpoint-1)
|
||
|
quickSortHlp(data_list,splitpoint+1,last)
|
||
|
|
||
|
|
||
|
def partition(data_list,first,last):
|
||
|
pivotvalue = data_list[first]
|
||
|
|
||
|
leftmark = first+1
|
||
|
rightmark = last
|
||
|
|
||
|
done = False
|
||
|
while not done:
|
||
|
|
||
|
while leftmark <= rightmark and data_list[leftmark] <= pivotvalue:
|
||
|
leftmark = leftmark + 1
|
||
|
|
||
|
while data_list[rightmark] >= pivotvalue and rightmark >= leftmark:
|
||
|
rightmark = rightmark -1
|
||
|
|
||
|
if rightmark < leftmark:
|
||
|
done = True
|
||
|
else:
|
||
|
temp = data_list[leftmark]
|
||
|
data_list[leftmark] = data_list[rightmark]
|
||
|
data_list[rightmark] = temp
|
||
|
|
||
|
temp = data_list[first]
|
||
|
data_list[first] = data_list[rightmark]
|
||
|
data_list[rightmark] = temp
|
||
|
|
||
|
|
||
|
return rightmark
|
||
|
|
||
|
data_list = [54,26,93,17,77,31,44,55,20]
|
||
|
quickSort(data_list)
|
||
|
print(data_list)
|