import random import time def partition(A,p,r): x=A[r] lo,hi=p,r-1 for i in range(p,r): if A[i]0: for i in range(len(A)): digit=(A[i]//exp)%b buckets[digit].append(A[i]) A=[] for bucket in buckets: A.extend(bucket) exp*=b return A if __name__=="__main__": C=[random.randint(0,10000000) for _ in range(100000)] A=C.copy() start=time.time() Ao=sorted(A) end=time.time() print(f"Time taken: for built-in sort {end-start} seconds") A=C.copy() start=time.time() randomized_quicksort(A,0,len(A)-1) end=time.time() print(A==Ao) print(f"Time taken: for randomized quicksort {end-start} seconds") A=C.copy() start=time.time() quicksort(A,0,len(A)-1) end=time.time() print(A==Ao) print(f"Time taken: for quicksort {end-start} seconds") A=C.copy() start=time.time() merge_sort(A,0,len(A)-1) end=time.time() print(A==Ao) print(f"Time taken: for merge sort {end-start} seconds") A=C.copy() start=time.time() radix_sort(A) end=time.time() print(A==Ao) print(f"Time taken: for radix sort {end-start} seconds")