insertion sortinsertion sort parosh aziz abdulla uppsala university august 27, 2010 parosh aziz...

Post on 02-Jun-2020

8 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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