insertion sortinsertion sort parosh aziz abdulla uppsala university august 27, 2010 parosh aziz...
Post on 02-Jun-2020
8 Views
Preview:
TRANSCRIPT
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
top related