**What is Best, Average and Worst case Analysis of Algorithms? Analyse**

**the following algorithm Best, Average and Worst case [8]**

**void sort (int a. int n) {**

**int i, j;**

**for (i = 0; i < n; i++) {**

**j = i-1;**

**key = a[i];**

**while (j >=0 && a[j] > key)**

**{**

**a[j+1] = a[j];**

**j = j-1;**

**}**

**a[j+1] = key;**

**}**

**}**

**Ans : **

**.**

The best-case analysis of an algorithm refers to the scenario where the algorithm performs optimally with the minimum possible amount of work. In this case, the input is already sorted, and the algorithm simply checks each element without needing to swap any of them. The best-case time complexity of this algorithm is O(n), where n is the number of elements in the array.

The average-case analysis considers the average behavior of the algorithm for a random distribution of inputs. It takes into account all possible inputs and their probabilities. For this particular algorithm, the average-case time complexity is also O(n^2), as it involves nested loops that iterate through the array.

The worst-case analysis focuses on the scenario where the algorithm performs the most amount of work. In this case, the input is in reverse order, requiring the maximum number of comparisons and swaps. The worst-case time complexity of this algorithm is O(n^2), as it involves nested loops iterating through the array.

Overall, this sorting algorithm has a best-case, average-case, and worst-case time complexity of O(n^2), indicating that its performance is quadratic in the number of elements in the array.