Download the selection sort function and make the following modifications. 1. Write function exchange. Then perform the second test (b) described below to make sure everything works. 2. Modify the functions. The selection sort should arrange values in descending, not ascending, order in its argument array. This requires a minor modification. Also, make the call to exchange unconditional - in other words, always perform it even if the values of max_sub and fill are the same. Display the values of max_sub and fill and the elements at these locations before and after each call to exchange. After you make these mods, Peform the following tests. a. First, have your main function store the integers 1 through 10 in a ten-element array and sort them. Display the array before and after the sort. b. Second, have your main function store the integers 1 through 10 in reverse order in a 10 element array (i.e., 10 is x[0], 9 is in x[1], etc.) and sort them. Display the array before and after. c. Third, have your main function use function random (in stdlib.h) to generate a "random" integer between 1 and 100. Store each random number in an element of a 30 element array. Display the array before and after. New challenge: Try to implement the bubble sort algorithm. It works the following way. Assume array is not sorted (set a boolean flag sorted to false) // Make a pass through the array if it is not sorted while the array is not sorted { Assume this is the last pass and array is sorted. (sorted is true) Advance index first through the array, from element 0 to n-2 if the elements at indices first and first + 1 are not in order Exchange them and reset sorted to false (array is not sorted) } Show the progress of this algorithm for an array: 5, 8, 9, 3, 4, 6 Show each switch you make during a pass: for example, pass 1 5 8 9 3 4 6 1st switch 5 8 3 9 4 6 2nd switch 5 8 3 4 9 6 ... pass 2 1st switch ...