Please I want a detailed complete answers for each part.Then make sure you provide clear picture(s) of soultions that I can read. Try making all numbers and letters clrearly readable easy to recognize. You also can type it which I prefer so I can copy all later, paste them in Microsoft Word to enlarge & edit if needed. Thanks for all :) 1. Sort the record 9, 34,17,6, 15, 3:8 by using the following sorting techniques, respectively, 1) QuickSort with a good call for the first pivot value 2) MergeSort 3) HeapSort (including the details for building 1st Heap, and all 6 heaps) 4) Binsort (Choose Bins as: 0-9; 10-19, 20-29, 30-39) 5) Radix sort The details of each sorting step should be ncluded The details of each sorting step should be included Solution QuickSort: QuickSort is a Divide and Conquer algorithm. It picks an element as pivot and partitions the given array around the picked pivot. There are many different versions of quickSort that pick pivot in different ways. The key process in quickSort is partition(). Target of partitions is, given an array and an element x of array as pivot, put x at its correct position in sorted array and put all smaller elements (smaller than x) before x, and put all greater elements (greater than x) after x. All this should be done in linear time elements: 9 34 17 6 15 38 9 34 17 6 15 38 9 34 17 6 15 38 9 34 17 6 15 38 9 34 17 6 15 38 9 34 17 6 15 38 9 6 17 34 15 38 swapping 15 and 34 15 is choosing pivot compare with i-1 value Program def quickSort(alist): quickSortHelper(alist,0,len(alist)-1) def quickSortHelper(alist,first,last): if first= pivotvalue and rightmark >= leftmark: rightmark = rightmark -1 if rightmark < leftmark: done = True else: temp = alist[leftmark] alist[leftmark] = alist[rightmark] alist[rightmark] = temp temp = alist[first] alist[first] = alist[rightmark] alist[rightmark] = temp return rightmark alist = [9,34,17,6,15,8] quickSort(alist) print(alist) Mergesort: MergeSort is a Divide and Conquer algorithm. It divides input array in two halves, calls itself for the two halves and then merges the two sorted halves. The merge() function is used for merging two halves. The merge(arr, l, m, r) is key process that assumes that arr[l..m] and arr[m+1..r] are sorted and merges the two sorted sub-arrays into one. See following C implementation for details. 9 34 17 6 15 38 divide two parts 9 34 17 6 15 38 divide separate parts 9 34 17 6 15 38 compare two elements in each section 9 34 17 6 15 38 compare section to section 9 17 34 6 15 38 compare two section 6 9 15 17 34 38 Merges two subarrays of arr[]. # First subarray is arr[l..m] # Second subarray is arr[m+1..r] def merge(arr, l, m, r): n1 = m - l + 1 n2 = r- m # create temp arrays L = [0] * (n1) R = [0] * (n2) # Copy data to temp arrays L[] and R[] for i in range(0 , n1): L[i] = arr[l + i] for j in range(0 , n2): R[j] = arr[m + 1 + j] # Merge the temp arrays back into arr[l..r] i = 0 # Initial index of first subarray j = 0 # Initial index of second.