The worst case running time of {\cf find2D} is $O(n^2)$. This is seen by examining the worst case where the element $x$ is the very last item in the $n\times n$ array to be examined. In this case, {\cf find2d} calls the algorithm {\cf arrayFind} $n$ times. {\cf arrayFind} will then have to search all $n$ elements for each call until the final call when $x$ is found. Therefore, $n$ comparisons are done for each {\cf arrayFind} call. Since {\cf arrayFind} is called $n$ times, we have $n * n$ operations, or an $O(n^2)$ running time. This is not a linear time algorithm; it is quadratic. If this were a linear time algorithm, the running time would be proportional to its input size.