Each team works on assigned sorting algorithms and will give demonstration and PowerPoint presentation on Nov. 16^th during lab class. Search internet for tutorials and source code in python on sorting algorithms assigned to your team. Modify the python code to count the number of comparisons and the number of swaps when sorting a random list of size n, n>=100, for example, n = 100, 1000, 10000. To test your program use a small size of n for example, n = 10, and print the list before and after sorting. Once confirmed the your program sorts correctly, try larger size of n without print the list. In your presentation, explain how do the sorting algorithms work and given their worst case and average case complexity, and include following table: Submit the source code and presentation to D2L Assignment for Team Project 1 before 11:00PM. 11/16/2016 Sorting Algorithms: Selection sort, quick sort Insertion sort, shell sort Bubble sort, merge sort Heap sort Radix sort Solution Selection Sort: def selectionSort(list1): for x in range(len(list1)-1,0,-1): max_pos=0 for location in range(1,x+1): if list1[location]>list1[max_pos]: max_pos = location temp = list1[x] list1[x] = list1[max_pos] list1[max_pos] = temp list1 = [100,550,12,10,9] selectionSort(list1) print \"Sorted List\" print(list1) ================================================ Output: Sorted List [9, 10, 12, 100, 550] ================================================== Quck sort def quickSort(list1): quickSortHelper(list1,0,len(list1)-1) def quickSortHelper(list1,left,right): if left= pivot and r >= l: r = r -1 if r < l: done = True else: temp = list1[l] list1[l] = list1[r] list1[r] = temp temp = list1[left] list1[left] = list1[r] list1[r] = temp return r list1 = [100,550,12,10,9] quickSort(list1) print(list1) ============================================= Output: [9, 10, 12, 100, 550] ================================================= insertion sort: def insertionSort(list1): for i in range(1,len(list1)): currentvalue = list1[i] position = i while position>0 and list1[position-1]>currentvalue: list1[position]=list1[position-1] position = position-1 list1[position]=currentvalue list1 = [100,550,12,10,9] insertionSort(list1) print(list1) =================================================== Output: [9, 10, 12, 100, 550] ================================================= Bubble sort: def bubbleSort(list1): for x in range(len(list1)-1,0,-1): for i in range(x): if list1[i]>list1[i+1]: temp = list1[i] list1[i] = list1[i+1] list1[i+1] = temp list1 = [100,550,12,10,9] bubbleSort(list1) print(list1) ====================================== Output: [9, 10, 12, 100, 550] ==================================== def mergeSort(list1): print(\"Splitting list \",list1) if len(list1)>1: mid = len(list1)//2 lefthalf = list1[:mid] righthalf = list1[mid:] mergeSort(lefthalf) mergeSort(righthalf) i=0 j=0 k=0 while i < len(lefthalf) and j < len(righthalf): if lefthalf[i] < righthalf[j]: list1[k]=lefthalf[i] i=i+1 else: lis.