Insertion SortInsertion Sort Parosh Aziz Abdulla Uppsala University August 27, 2010 Parosh Aziz...

86
Insertion Sort Parosh Aziz Abdulla Uppsala University August 27, 2010 Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 1/6

Transcript of Insertion SortInsertion Sort Parosh Aziz Abdulla Uppsala University August 27, 2010 Parosh Aziz...

Page 1: Insertion SortInsertion 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)

Insertion Sort

Parosh Aziz Abdulla

Uppsala University

August 27, 2010

Parosh Aziz Abdulla (Uppsala University) Insertion Sort August 27, 2010 1 / 6

Page 2: Insertion SortInsertion 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)

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

Page 3: Insertion SortInsertion 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)

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

Page 4: Insertion SortInsertion 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)

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

Page 5: Insertion SortInsertion 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)

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

Page 6: Insertion SortInsertion 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)

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

Page 7: Insertion SortInsertion 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)

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

Page 8: Insertion SortInsertion 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)

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

Page 9: Insertion SortInsertion 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)

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

Page 10: Insertion SortInsertion 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)

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

Page 11: Insertion SortInsertion 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)

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

Page 12: Insertion SortInsertion 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)

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

Page 13: Insertion SortInsertion 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)

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

Page 14: Insertion SortInsertion 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)

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

Page 15: Insertion SortInsertion 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)

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

Page 16: Insertion SortInsertion 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)

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

Page 17: Insertion SortInsertion 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)

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

Page 18: Insertion SortInsertion 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)

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

Page 19: Insertion SortInsertion 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)

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

Page 20: Insertion SortInsertion 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)

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

Page 21: Insertion SortInsertion 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)

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

Page 22: Insertion SortInsertion 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)

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

Page 23: Insertion SortInsertion 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)

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

Page 24: Insertion SortInsertion 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)

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

Page 25: Insertion SortInsertion 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)

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

Page 26: Insertion SortInsertion 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)

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

Page 27: Insertion SortInsertion 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)

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

Page 28: Insertion SortInsertion 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)

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

Page 29: Insertion SortInsertion 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)

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

Page 30: Insertion SortInsertion 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)

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

Page 31: Insertion SortInsertion 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)

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

Page 32: Insertion SortInsertion 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)

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

Page 33: Insertion SortInsertion 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)

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

Page 34: Insertion SortInsertion 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)

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

Page 35: Insertion SortInsertion 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)

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

Page 36: Insertion SortInsertion 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)

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

Page 37: Insertion SortInsertion 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)

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

Page 38: Insertion SortInsertion 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)

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

Page 39: Insertion SortInsertion 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)

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

Page 40: Insertion SortInsertion 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)

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

Page 41: Insertion SortInsertion 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)

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

Page 42: Insertion SortInsertion 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)

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

Page 43: Insertion SortInsertion 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)

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

Page 44: Insertion SortInsertion 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)

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

Page 45: Insertion SortInsertion 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)

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

Page 46: Insertion SortInsertion 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)

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

Page 47: Insertion SortInsertion 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)

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

Page 48: Insertion SortInsertion 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)

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

Page 49: Insertion SortInsertion 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)

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

Page 50: Insertion SortInsertion 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)

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

Page 51: Insertion SortInsertion 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)

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

Page 52: Insertion SortInsertion 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)

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

Page 53: Insertion SortInsertion 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)

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

Page 54: Insertion SortInsertion 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)

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

Page 55: Insertion SortInsertion 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)

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

Page 56: Insertion SortInsertion 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)

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

Page 57: Insertion SortInsertion 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)

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

Page 58: Insertion SortInsertion 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)

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

Page 59: Insertion SortInsertion 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)

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

Page 60: Insertion SortInsertion 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)

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

Page 61: Insertion SortInsertion 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)

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

Page 62: Insertion SortInsertion 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)

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

Page 63: Insertion SortInsertion 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)

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

Page 64: Insertion SortInsertion 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)

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

Page 65: Insertion SortInsertion 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)

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

Page 66: Insertion SortInsertion 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)

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

Page 67: Insertion SortInsertion 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)

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

Page 68: Insertion SortInsertion 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)

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

Page 69: Insertion SortInsertion 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)

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

Page 70: Insertion SortInsertion 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)

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

Page 71: Insertion SortInsertion 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)

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

Page 72: Insertion SortInsertion 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)

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

Page 73: Insertion SortInsertion 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)

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

Page 74: Insertion SortInsertion 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)

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

Page 75: Insertion SortInsertion 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)

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

Page 76: Insertion SortInsertion 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)

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

Page 77: Insertion SortInsertion 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)

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

Page 78: Insertion SortInsertion 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)

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

Page 79: Insertion SortInsertion 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)

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

Page 80: Insertion SortInsertion 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)

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

Page 81: Insertion SortInsertion 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)

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

Page 82: Insertion SortInsertion 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)

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

Page 83: Insertion SortInsertion 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)

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

Page 84: Insertion SortInsertion 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)

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

Page 85: Insertion SortInsertion 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)

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

Page 86: Insertion SortInsertion 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)

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