def insertion_sort(A, r = False): for i in range(1,len(A)): k = A[i] j = i - 1 while j>=0 and ( (A[j] > k and r) or (A[j] < k and not r ) ): A[j + 1] = A[j] j = j - 1 A[j + 1] = k return A def bubble_sort(A, r = False): for i in range(len(A)): print(A) for j in range(len(A) - i - 1): if A[j] > A[j+1]: t = A[j] A[j] = A[j+1] A[j+1] = t return A def quick_sort(A, p, r): def partition(p, r): x = A[p] while True: while A[p] < x: p = p + 1 while A[r] > x: r = r - 1 if p < r: t = A[r] A[r] = A[p] A[p] = t p = p + 1 r = r - 1 else: return r if p < r: q = partition(p, r) quick_sort(A, p, q) quick_sort(A, q+1, r) A = [4,2,1,6,7] quick_sort(A, 0, len(A) - 1) print(A) #print(insertion_sort(A, False)) #print(bubble_sort(A))