2. Analysis for Insertion Sort
INSERTION-SORT(A)
Cost
times
1 for j=2 to n{
2 Key=A[j]
3 //Insert A[j] into the sorted sequence A[1..j-1]
c1
C2
0
n
n-1
n-1
4
5
6
7
8
c4
C5
C6
C7
c8
n-1
i=j-1
While i>0 and A[i]>key{
A[i+1]=A[i]
i=i-1 }
A[i+1]=key }
n
T (n) c1n c2 (n 1) c4 (n 1) c5
n
t j c6
j 2
n
n
j 2
n
j 2
tj 1
tj 1
n-1
n
t j 1 c7
j 2
t
j 2 j
t j 1 c8 (n 1)
j 2
3. Insertion Sort Analysis (cont.)
• Best Case:
Array already sorted, t j
n
T (n) c1n c2 (n 1) c4 (n 1) c5
1 for all j.
n
t j c6
j 2
n
t j 1 c7
j 2
t j 1 c8 (n 1)
j 2
c1 c2 c4 c5 c8 * n (c2 c4 c5 c8 )
an b
(Linear in n)
4. Insertion Sort Analysis (cont.)
We are usually interested in the
worst-case running time
• Worst Case:
Array in reverse order,
T ( n)
c1n c2 (n 1) c4 (n 1) c5
c5 / 2 c6 / 2 c7 / 2 n 2
tj
n(n 1)
1
2
j for all j.
c6
(n 1)n
(n 1)n
c7
c8 (n 1)
2
2
c1 c2 c4 c5 / 2 c6 / 2 c7 / 2 c8 n (c2 c4 c5 c8 )
Is in an2 + bn+ c (quadratic in n)
Note that