Insertion SortInsertion Sort Parosh Aziz Abdulla Uppsala University August 27, 2010 Parosh Aziz...
Transcript of Insertion SortInsertion Sort Parosh Aziz Abdulla Uppsala University August 27, 2010 Parosh Aziz...
Insertion Sort
Parosh Aziz Abdulla
Uppsala University
August 27, 2010
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 1 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 4
6 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 4
6 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 3 5 1 2 46 3 5 1 2 4
j = 2
i
6 5 1 2 4
3
j = 2
i
6 5 1 2 4
3
j = 2
3 6 5 1 2 4
j = 2
3 6 5 1 2 4
j = 3
i
3 6 1 2 4
5
j = 3
i
3 6 1 2 4
5
j = 3
3 5 6 1 2 4
j = 3
3 5 6 1 2 4
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
i
3 5 6 2 4
1
j = 4
1 3 5 6 2 4
j = 4
1 3 5 6 2 4
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
i
1 3 5 6 4
2
j = 5
1 2 3 5 6 4
j = 5
1 2 3 5 6 4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
i
1 2 3 5 6
4
j = 6
1 2 3 4 5 6
j = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 2 / 6
Insertion Sort - Cost Analysis
Insertion-Sort(A) cost times
1 for j ← 2 to length[A]
..................................... c1 n
2 do key ← A[j]
......................................... c2 n − 1
3 � Insert A[j] into A[1 . . j − 1].
........... 0 n − 1
4 i ← j − 1
............................................ c4 n − 1
5 while i > 0 and A[i ] > key
.................. c5n∑
j=2
tj
6 do A[i + 1]← A[i ]
........................ c6n∑
j=2
(tj − 1
)
7 i ← i − 1
................................. c7n∑
j=2
(tj − 1
)
8 A[i + 1]← key
.................................... c8 n − 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 3 / 6
Insertion Sort - Cost Analysis
Insertion-Sort(A) cost times
1 for j ← 2 to length[A] ..................................... c1
n
2 do key ← A[j] ......................................... c2
n − 1
3 � Insert A[j] into A[1 . . j − 1]. ........... 0
n − 1
4 i ← j − 1 ............................................ c4
n − 1
5 while i > 0 and A[i ] > key .................. c5
n∑j=2
tj
6 do A[i + 1]← A[i ] ........................ c6
n∑j=2
(tj − 1
)
7 i ← i − 1 ................................. c7
n∑j=2
(tj − 1
)
8 A[i + 1]← key .................................... c8
n − 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 3 / 6
Insertion Sort - Cost Analysis
Insertion-Sort(A) cost times
1 for j ← 2 to length[A] ..................................... c1 n
2 do key ← A[j] ......................................... c2
n − 1
3 � Insert A[j] into A[1 . . j − 1]. ........... 0
n − 1
4 i ← j − 1 ............................................ c4
n − 1
5 while i > 0 and A[i ] > key .................. c5
n∑j=2
tj
6 do A[i + 1]← A[i ] ........................ c6
n∑j=2
(tj − 1
)
7 i ← i − 1 ................................. c7
n∑j=2
(tj − 1
)
8 A[i + 1]← key .................................... c8
n − 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 3 / 6
Insertion Sort - Cost Analysis
Insertion-Sort(A) cost times
1 for j ← 2 to length[A] ..................................... c1 n
2 do key ← A[j] ......................................... c2 n − 1
3 � Insert A[j] into A[1 . . j − 1]. ........... 0
n − 1
4 i ← j − 1 ............................................ c4
n − 1
5 while i > 0 and A[i ] > key .................. c5
n∑j=2
tj
6 do A[i + 1]← A[i ] ........................ c6
n∑j=2
(tj − 1
)
7 i ← i − 1 ................................. c7
n∑j=2
(tj − 1
)
8 A[i + 1]← key .................................... c8
n − 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 3 / 6
Insertion Sort - Cost Analysis
Insertion-Sort(A) cost times
1 for j ← 2 to length[A] ..................................... c1 n
2 do key ← A[j] ......................................... c2 n − 1
3 � Insert A[j] into A[1 . . j − 1]. ........... 0 n − 1
4 i ← j − 1 ............................................ c4
n − 1
5 while i > 0 and A[i ] > key .................. c5
n∑j=2
tj
6 do A[i + 1]← A[i ] ........................ c6
n∑j=2
(tj − 1
)
7 i ← i − 1 ................................. c7
n∑j=2
(tj − 1
)
8 A[i + 1]← key .................................... c8
n − 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 3 / 6
Insertion Sort - Cost Analysis
Insertion-Sort(A) cost times
1 for j ← 2 to length[A] ..................................... c1 n
2 do key ← A[j] ......................................... c2 n − 1
3 � Insert A[j] into A[1 . . j − 1]. ........... 0 n − 1
4 i ← j − 1 ............................................ c4 n − 1
5 while i > 0 and A[i ] > key .................. c5
n∑j=2
tj
6 do A[i + 1]← A[i ] ........................ c6
n∑j=2
(tj − 1
)
7 i ← i − 1 ................................. c7
n∑j=2
(tj − 1
)
8 A[i + 1]← key .................................... c8
n − 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 3 / 6
Insertion Sort - Cost Analysis
Insertion-Sort(A) cost times
1 for j ← 2 to length[A] ..................................... c1 n
2 do key ← A[j] ......................................... c2 n − 1
3 � Insert A[j] into A[1 . . j − 1]. ........... 0 n − 1
4 i ← j − 1 ............................................ c4 n − 1
5 while i > 0 and A[i ] > key .................. c5n∑
j=2
tj
6 do A[i + 1]← A[i ] ........................ c6
n∑j=2
(tj − 1
)
7 i ← i − 1 ................................. c7
n∑j=2
(tj − 1
)
8 A[i + 1]← key .................................... c8
n − 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 3 / 6
Insertion Sort - Cost Analysis
Insertion-Sort(A) cost times
1 for j ← 2 to length[A] ..................................... c1 n
2 do key ← A[j] ......................................... c2 n − 1
3 � Insert A[j] into A[1 . . j − 1]. ........... 0 n − 1
4 i ← j − 1 ............................................ c4 n − 1
5 while i > 0 and A[i ] > key .................. c5n∑
j=2
tj
6 do A[i + 1]← A[i ] ........................ c6n∑
j=2
(tj − 1
)7 i ← i − 1 ................................. c7
n∑j=2
(tj − 1
)
8 A[i + 1]← key .................................... c8
n − 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 3 / 6
Insertion Sort - Cost Analysis
Insertion-Sort(A) cost times
1 for j ← 2 to length[A] ..................................... c1 n
2 do key ← A[j] ......................................... c2 n − 1
3 � Insert A[j] into A[1 . . j − 1]. ........... 0 n − 1
4 i ← j − 1 ............................................ c4 n − 1
5 while i > 0 and A[i ] > key .................. c5n∑
j=2
tj
6 do A[i + 1]← A[i ] ........................ c6n∑
j=2
(tj − 1
)7 i ← i − 1 ................................. c7
n∑j=2
(tj − 1
)8 A[i + 1]← key .................................... c8
n − 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 3 / 6
Insertion Sort - Cost Analysis
Insertion-Sort(A) cost times
1 for j ← 2 to length[A] ..................................... c1 n
2 do key ← A[j] ......................................... c2 n − 1
3 � Insert A[j] into A[1 . . j − 1]. ........... 0 n − 1
4 i ← j − 1 ............................................ c4 n − 1
5 while i > 0 and A[i ] > key .................. c5n∑
j=2
tj
6 do A[i + 1]← A[i ] ........................ c6n∑
j=2
(tj − 1
)7 i ← i − 1 ................................. c7
n∑j=2
(tj − 1
)8 A[i + 1]← key .................................... c8 n − 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 3 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Best Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
1 2 3 4 5 6
j = 2
i
1 3 4 5 6
j = 2
2
1 2 3 4 5 6
j = 2
tj = 1
1 2 3 4 5 6
j = 3
i
1 2 4 5 6
j = 3
3
1 2 3 4 5 6
j = 3
tj = 1
1 2 3 4 5 6
j = 4
i
1 2 3 5 6
j = 4
4
1 2 3 4 5 6
j = 4
tj = 1
1 2 3 4 5 6
j = 5
i
1 2 3 4 6
j = 5
5
1 2 3 4 5 6
j = 5
tj = 1
1 2 3 4 5 6
j = 6
i
1 2 3 4 5
j = 6
6
1 2 3 4 5 6
j = 6
tj = 1
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 4 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Worst Case
Insertion-Sort(A)
1 for j ← 2 to length[A]2 do key ← A[j]3 � Insert A[j] into A[1 . . j − 1].4 i ← j − 15 while i > 0 and A[i ] > key6 do A[i + 1]← A[i ]7 i ← i − 18 A[i + 1]← key
6 5 4 3 2 1
j = 2
i
6 4 3 2 1
5
j = 2
i
6 4 3 2 1
5
j = 2
5 6 4 3 2 1
j = 2
tj = 2
5 6 4 3 2 1
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
i
5 6 3 2 1
4
j = 3
4 5 6 3 2 1
j = 3
tj = 3
4 5 6 3 2 1
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
i
4 5 6 2 1
3
j = 4
3 4 5 6 2 1
j = 4
tj = 4
3 4 5 6 2 1
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
i
3 4 5 6 1
2
j = 5
2 3 4 5 6 1
j = 5
tj = 5
2 3 4 5 6 1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
i
2 3 4 5 6
1
j = 6
1 2 3 4 5 6
j = 6
tj = 6tj = 6
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 5 / 6
Insertion Sort - Average Case
1 3 6 8 8 9 7 6
j = 7
1 3 6 8 8 9 6
7
j = 7
1 3 6 8 8 9 6
7
j = 7
1 3 6 7 8 8 9 6
j = 7
tj ≈ j2
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 6 / 6
Insertion Sort - Average Case
1 3 6 8 8 9 7 6
j = 7
1 3 6 8 8 9 6
7
j = 7
1 3 6 8 8 9 6
7
j = 7
1 3 6 7 8 8 9 6
j = 7
tj ≈ j2
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 6 / 6
Insertion Sort - Average Case
1 3 6 8 8 9 7 6
j = 7
1 3 6 8 8 9 6
7
j = 7
1 3 6 8 8 9 6
7
j = 7
1 3 6 7 8 8 9 6
j = 7
tj ≈ j2
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 6 / 6
Insertion Sort - Average Case
1 3 6 8 8 9 7 6
j = 7
1 3 6 8 8 9 6
7
j = 7
1 3 6 8 8 9 6
7
j = 7
1 3 6 7 8 8 9 6
j = 7
tj ≈ j2
Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 6 / 6