Download - 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)

Transcript
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