Computers and Technology, 01.02.2019 21:20
)a grad student comes up with the following algorithm to sort an array a[1..n] that works by first sorting the first 2/3rds of the array, then sorting the last 2/3rds of the (resulting) array, and finally sorting the first 2/3rds of the new array. 1: function g-sort(a, n) . takes as input an array of n numbers, a[1..n] 2: g-sort-recurse(a, 1, n) 3: end function 4: function g-sort-recurse(a, `, u) 5: if u â’ ` â‰¤ 0 then 6: return . 1 or fewer elements already sorted 7: else if u â’ ` = 1 then . 2 elements 8: if a[u] < a[`] then . swap values 9: temp â† a[u] 10: a[u] â† a[`] 11: a[`] â† temp 12: end if 13: else . 3 or more elements 14: size â† u â’ ` + 1 15: twothirds â† d(2 â— size)/3e 16: g-sort-recurse(a, `, ` + twothirds â’ 1) 17: g-sort-recurse(a, u â’ twothirds + 1, u) 18: g-sort-recurse(a, `, ` + twothirds â’ 1) 19: end if 20: end function first (5 pts), prove that the algorithm correctly sorts the numbers in the array (in increasing order). after showing that it correctly sorts 1 and 2 element intervals, you may make the (incorrect) assumption that the number of elements being passed to g-sort-recurse is always a multiple of 3 to simplify the notation (and drop the floors/ceilings).