0% found this document useful (0 votes)
71 views2 pages

Insertion Sort: 2.1 Comparisons

1) Insertion sort works by sorting the first i-1 elements of an array, then inserting the ith element into its proper place in the sorted subarray. It repeats this process until the entire array is sorted. 2) There are two versions - one uses a sentinel value and one does not. 3) The worst case is a reverse sorted array, requiring on average (n-1)(n+4)/4 comparisons and (n-1)(n+4)/2 exchanges. The best case requires n-1 comparisons and 2n-1 exchanges.

Uploaded by

Andrew Lee
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
71 views2 pages

Insertion Sort: 2.1 Comparisons

1) Insertion sort works by sorting the first i-1 elements of an array, then inserting the ith element into its proper place in the sorted subarray. It repeats this process until the entire array is sorted. 2) There are two versions - one uses a sentinel value and one does not. 3) The worst case is a reverse sorted array, requiring on average (n-1)(n+4)/4 comparisons and (n-1)(n+4)/2 exchanges. The best case requires n-1 comparisons and 2n-1 exchanges.

Uploaded by

Andrew Lee
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

Insertion Sort

Algorithm

The approach is to sort the first i-1 elements, then insert element i into its
proper location in that subarray. Repeat until the array is sorted.
There are two versions of the algorithm: first one assumes a sentinel
value A[0] = -inf, and the second one doesnt use this sentinel.
1

2
2.1

A [0] = - inf
for i in [2 , n ]:
t , j = A [ i ] , i -1
while A [ j ] > t :
A [ j +1] = A [ j ]
j-A [ j +1] = T

for i in [2 , n ]:
t , j = A [ i ] , i -1
while j > 0 and A [ j ] > t :
A [ j +1] = A [ j ]
j-A [ j +1] = t

Analysis
Comparisons

The following calculations are for the sentinel version. They can be redone
for the non-sentinel version pretty simply by counting how many fewer operations are done every iteration.
Best case In the best case, n 1 comparisons are done because the
while loop checks once every time the for loop runs.
Worst case Because of the presence of the sentinel value, the worst
case is a reverse-sorted array in which case there are i comparisons done in
each iteration of the for loop.
!
n
n
X
X
(n 1)(n + 2)
i=
i 1=
(1)
2
i=2

i=1

Average case Consider a snapshot of the algorithm at iteration i, j. t


can potentially be inserted into any of i possible spots, and at the j th itera-

Insertion Sort
tion of the while-loop there will have been i j + 1 comparisons conducted.
n X
i
X
1
i=2 j=1

n
i
X
1 X
(i j + 1) =

(i j + 1)
i
i
i=2

(2)

j=1

n
i
X
1 X

j
i

(3)

n
X
1 i(i + 1)

=
i
2

(4)

i=2

j=1

i=2

1X
(i + 1)
2

(5)

(n 1)(n + 4)
=
4

(6)

i=2

2.2

Exchanges

Best case 2n 1, with the extra 1 being from moving the sentinel into
position 0 at the beginning of the algorithm.
Worst case The worst case is a reverse-sorted array, which means
there will be i + 1 exchanges done every iteration.
1+

n
n1
X
X
(i + 1) = 1 +
(i + 2)
i=2

=
Average case

(7)

i=1

(n 1)(n + 4)
+1
2

Its not worth it to do this calculation.

(8)

You might also like