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)  