E = LinkedQueue() G = LinkedQueue() while not S.is_empty(): # divide S into L, E, and G if S.first() < p: L.enqueue(S.dequeue()) elif p < S.first(): G.enqueue(S.dequeue()) else: # S.first() must equal pivot E.enqueue(S.dequeue()) # conquer (with recursion) quick_sort(L) # sort elements less than p quick_sort(G) # sort elements greater than p # concatenate results while not L.is_empty(): S.enqueue(L.dequeue()) while not E.is_empty(): S.enqueue(E.dequeue()) while not G.is_empty(): S.enqueue(G.dequeue()) #client code A = [2, 3, 4, 5, 6, 6, 1, 4, 10] #list data = LinkedQueue() #queue object for i in range(len(A)): data.enqueue(A[i]) quick_sort(data) print(data.printqueue())