Consider the problem of finding the smallest and largest elements in an array of $n$ numbers.
a. Design a presorting-based algorithm for solving this problem and determine its efficiency class.
b. Compare the efficiency of the three algorithms: (i) the brute-force algorithm, (ii) this presorting-based algorithm, and (iii) the divide-and-conquer algorithm (see Problem 2 in Exercises 5.1).