Best Case: If the list is sorted already then A[i] <= key at line 4. Thus, rest of the lines in the inner loop will not execute. Then,
T (n) = c1n + c2 (n -1) + c3(n -1) + c4 (n -1) = O (n), which indicates that the time complexity is linear.
Worst Case: This case arises while the list is sorted in reverse order. Thus, for execution of line 1, the Boolean condition at line 4 will be true.
So, step line 4 is executed
T (n) = c1n + c2(n -1) + c3(n -1) + c4 (n(n+1)/2 - 1) + c5(n(n -1)/2) + c6(n(n-1)/2) + c7 (n -1)
= O (n^{2}).
Average case: In mostly cases, the list will be into some random order. That is, it neither sorted in descending or ascending order and the time complexity will lie somewhere among the best & the worst case.
T (n) _{best } < T(n) _{Avg.} < T(n) _{worst}