Top Banner
QuickSort Parosh Aziz Abdulla Uppsala University September 12, 2012 Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 1/7
146

QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Nov 15, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

QuickSort

Parosh Aziz Abdulla

Uppsala University

September 12, 2012

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 1 / 7

Page 2: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

1 The Partition Procedure

2 Algorithm

3 Worst-Case Behavior

4 Best-Case Behavior

5 Randomized QuickSort

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 2 / 7

Page 3: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

The Partition Procedure

Partition

Partition(A, p, r)

1 x ← A[r ]2 i ← p − 13 for j ← p to r − 14 do if A[j] ≤ x5 then i ← i + 16 exchange A[i ]↔ A[j]7 exchange A[i + 1]↔ A[r ]8 return i + 1

2 9 8 1 3 6 7 5

i

jp r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 1 8 9 3 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i r

2 1 3 5 8 6 7 9

p i r

Partition(A, 1, 8)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 3 / 7

Page 4: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

The Partition Procedure

Partition

Partition(A, p, r)

1 x ← A[r ]2 i ← p − 13 for j ← p to r − 14 do if A[j] ≤ x5 then i ← i + 16 exchange A[i ]↔ A[j]7 exchange A[i + 1]↔ A[r ]8 return i + 1

2 9 8 1 3 6 7 5

i

jp r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 1 8 9 3 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i r

2 1 3 5 8 6 7 9

p i r

Partition(A, 1, 8)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 3 / 7

Page 5: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

The Partition Procedure

Partition

Partition(A, p, r)

1 x ← A[r ]2 i ← p − 13 for j ← p to r − 14 do if A[j] ≤ x5 then i ← i + 16 exchange A[i ]↔ A[j]7 exchange A[i + 1]↔ A[r ]8 return i + 1

2 9 8 1 3 6 7 5

i

jp r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 1 8 9 3 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i r

2 1 3 5 8 6 7 9

p i r

Partition(A, 1, 8)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 3 / 7

Page 6: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

The Partition Procedure

Partition

Partition(A, p, r)

1 x ← A[r ]2 i ← p − 13 for j ← p to r − 14 do if A[j] ≤ x5 then i ← i + 16 exchange A[i ]↔ A[j]7 exchange A[i + 1]↔ A[r ]8 return i + 1

2 9 8 1 3 6 7 5

i

jp r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 1 8 9 3 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i r

2 1 3 5 8 6 7 9

p i r

Partition(A, 1, 8)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 3 / 7

Page 7: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

The Partition Procedure

Partition

Partition(A, p, r)

1 x ← A[r ]2 i ← p − 13 for j ← p to r − 14 do if A[j] ≤ x5 then i ← i + 16 exchange A[i ]↔ A[j]7 exchange A[i + 1]↔ A[r ]8 return i + 1

2 9 8 1 3 6 7 5

i

jp r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 1 8 9 3 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i r

2 1 3 5 8 6 7 9

p i r

Partition(A, 1, 8)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 3 / 7

Page 8: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

The Partition Procedure

Partition

Partition(A, p, r)

1 x ← A[r ]2 i ← p − 13 for j ← p to r − 14 do if A[j] ≤ x5 then i ← i + 16 exchange A[i ]↔ A[j]7 exchange A[i + 1]↔ A[r ]8 return i + 1

2 9 8 1 3 6 7 5

i

jp r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 1 8 9 3 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i r

2 1 3 5 8 6 7 9

p i r

Partition(A, 1, 8)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 3 / 7

Page 9: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

The Partition Procedure

Partition

Partition(A, p, r)

1 x ← A[r ]2 i ← p − 13 for j ← p to r − 14 do if A[j] ≤ x5 then i ← i + 16 exchange A[i ]↔ A[j]7 exchange A[i + 1]↔ A[r ]8 return i + 1

2 9 8 1 3 6 7 5

i

jp r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 1 8 9 3 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i r

2 1 3 5 8 6 7 9

p i r

Partition(A, 1, 8)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 3 / 7

Page 10: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

The Partition Procedure

Partition

Partition(A, p, r)

1 x ← A[r ]2 i ← p − 13 for j ← p to r − 14 do if A[j] ≤ x5 then i ← i + 16 exchange A[i ]↔ A[j]7 exchange A[i + 1]↔ A[r ]8 return i + 1

2 9 8 1 3 6 7 5

i

jp r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 1 8 9 3 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i r

2 1 3 5 8 6 7 9

p i r

Partition(A, 1, 8)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 3 / 7

Page 11: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

The Partition Procedure

Partition

Partition(A, p, r)

1 x ← A[r ]2 i ← p − 13 for j ← p to r − 14 do if A[j] ≤ x5 then i ← i + 16 exchange A[i ]↔ A[j]7 exchange A[i + 1]↔ A[r ]8 return i + 1

2 9 8 1 3 6 7 5

i

jp r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 9 8 1 3 6 7 5

ip j r

2 1 8 9 3 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i j r

2 1 3 9 8 6 7 5

p i r

2 1 3 5 8 6 7 9

p i r

Partition(A, 1, 8)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 3 / 7

Page 12: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)(A,1,10)(A,1,10)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,10)(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 13: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)(A,1,10)(A,1,10)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,10)(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 14: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)

QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,10)(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 15: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)

QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)

Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,10)(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 16: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)

QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)

Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,10)(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 17: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 18: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)

QuickSort(A, 1, 3)

QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 19: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)

QuickSort(A, 1, 3)

QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)

Partition(A, 1, 3)

Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 20: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)

QuickSort(A, 1, 3)

QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)

Partition(A, 1, 3)

Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 21: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 22: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)

QuickSort(A, 1, 1)

QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 23: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 24: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)

QuickSort(A, 3, 3)

QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 25: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 26: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)

QuickSort(A, 5, 10)

QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 27: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)

QuickSort(A, 5, 10)

QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)

Partition(A, 5, 10)

Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 28: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)

QuickSort(A, 5, 10)

QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)

Partition(A, 5, 10)

Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 29: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 30: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)

QuickSort(A, 5, 6)

QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 31: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)

QuickSort(A, 5, 6)

QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)

Partition(A, 5, 6)

Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 32: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)

QuickSort(A, 5, 6)

QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)

Partition(A, 5, 6)

Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)(A,5,4) (A,6,6)(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 33: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4)

(A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 34: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)

QuickSort(A, 5, 4)

QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4)

(A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 35: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4)

(A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 36: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)

QuickSort(A, 6, 6)

QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4)

(A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 37: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 38: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)

QuickSort(A, 8, 10)

QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 39: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)

QuickSort(A, 8, 10)

QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)

Partition(A, 8, 10)

Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 40: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)

QuickSort(A, 8, 10)

QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)

Partition(A, 8, 10)

Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)(A,8,7) (A,9,10)(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 41: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)

(A,8,7)

(A,9,10)

(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 42: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)

QuickSort(A, 8, 7)

QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)

(A,8,7)

(A,9,10)

(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 43: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)

(A,8,7)

(A,9,10)

(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 44: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)

QuickSort(A, 9, 10)

QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)

(A,8,7)

(A,9,10)

(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 45: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)

QuickSort(A, 9, 10)

QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)

Partition(A, 9, 10)(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)

(A,8,7)

(A,9,10)

(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 46: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)

QuickSort(A, 9, 10)

QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)

Partition(A, 9, 10)(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)

(A,8,7)

(A,9,10)

(A,9,10)

(A,9,9)(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 47: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)

(A,8,7)

(A,9,10)

(A,9,10)

(A,9,9)

(A,9,9)

(A,11,10)

(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 48: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)

QuickSort(A, 9, 9)

QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)

(A,8,7)

(A,9,10)

(A,9,10)

(A,9,9)

(A,9,9)

(A,11,10)

(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 49: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)

(A,8,7)

(A,9,10)

(A,9,10)

(A,9,9)

(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 50: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)

QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)

(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)

(A,8,7)

(A,9,10)

(A,9,10)

(A,9,9)

(A,9,9) (A,11,10)(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 51: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Algorithm

Quick Sort

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 10)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 10)QuickSort(A, 5, 6)QuickSort(A, 5, 4)QuickSort(A, 6, 6)QuickSort(A, 8, 10)QuickSort(A, 8, 7)QuickSort(A, 9, 10)QuickSort(A, 9, 9)QuickSort(A, 11, 10)

Partition(A, 1, 10)Partition(A, 1, 3)Partition(A, 5, 10)Partition(A, 5, 6)Partition(A, 8, 10)Partition(A, 9, 10)(A,1,10)

(A,1,10)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,10)

(A,5,10)

(A,5,6)

(A,5,6)

(A,5,4)

(A,5,4) (A,6,6)

(A,6,6)

(A,8,10)

(A,8,10)

(A,8,7)

(A,8,7) (A,9,10)

(A,9,10)

(A,9,9)

(A,9,9) (A,11,10)

(A,11,10)

9

1

9

1

1

1

1

1

1

1

1

1

1

2

1

2

3

2

3

2

3

2

2

2

2

2

3

3

3

3

2

3

2

3

2

3

3

3

3

3

3

3

6

4

6

4

4

4

4

4

8

5

8

5

8

5

8

5

8

5

6

5

6

5

6

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

5

6

5

6

5

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

6

7

6

7

2

8

2

8

9

8

9

8

9

8

9

8

9

8

9

8

7

8

7

8

5

9

5

9

5

9

5

9

5

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

8

9

4

10

4

10

6

10

6

10

6

10

7

10

7

10

7

10

9

10

9

10

9

10

9

10

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 4 / 7

Page 52: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)(A,1,8)

(A,1,7)(A,1,7) (A,9,8)(A,9,8)

(A,1,6)(A,1,6) (A,8,7)(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 53: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)(A,1,8)

(A,1,7)(A,1,7) (A,9,8)(A,9,8)

(A,1,6)(A,1,6) (A,8,7)(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 54: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)(A,1,7) (A,9,8)(A,9,8)

(A,1,6)(A,1,6) (A,8,7)(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 55: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)

QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)(A,1,7) (A,9,8)(A,9,8)

(A,1,6)(A,1,6) (A,8,7)(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 56: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)

QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)

Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)(A,1,7) (A,9,8)(A,9,8)

(A,1,6)(A,1,6) (A,8,7)(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 57: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)

QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)

Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)(A,1,7) (A,9,8)(A,9,8)

(A,1,6)(A,1,6) (A,8,7)(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 58: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)(A,1,6) (A,8,7)(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 59: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)

QuickSort(A, 1, 7)

QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)(A,1,6) (A,8,7)(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 60: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)

QuickSort(A, 1, 7)

QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)

Partition(A, 1, 7)

Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)(A,1,6) (A,8,7)(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 61: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)

QuickSort(A, 1, 7)

QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)

Partition(A, 1, 7)

Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)(A,1,6) (A,8,7)(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 62: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 63: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)

QuickSort(A, 1, 6)

QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 64: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)

QuickSort(A, 1, 6)

QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)

Partition(A, 1, 6)

Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 65: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)

QuickSort(A, 1, 6)

QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)

Partition(A, 1, 6)

Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)(A,1,5) (A,7,6)(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 66: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 67: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)

QuickSort(A, 1, 5)

QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 68: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)

QuickSort(A, 1, 5)

QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)

Partition(A, 1, 5)

Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 69: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)

QuickSort(A, 1, 5)

QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)

Partition(A, 1, 5)

Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)(A,1,4) (A,6,5)(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 70: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 71: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)

QuickSort(A, 1, 4)

QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 72: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)

QuickSort(A, 1, 4)

QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)

Partition(A, 1, 4)

Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 73: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)

QuickSort(A, 1, 4)

QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)

Partition(A, 1, 4)

Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)(A,1,3) (A,5,4)(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 74: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 75: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)

QuickSort(A, 1, 3)

QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 76: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)

QuickSort(A, 1, 3)

QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)

Partition(A, 1, 3)

Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 77: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)

QuickSort(A, 1, 3)

QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)

Partition(A, 1, 3)

Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)(A,1,2) (A,4,3)(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 78: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)

(A,1,2) (A,4,3)

(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 79: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)

QuickSort(A, 1, 2)

QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)

(A,1,2) (A,4,3)

(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 80: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)

QuickSort(A, 1, 2)

QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)

Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)

(A,1,2) (A,4,3)

(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 81: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)

QuickSort(A, 1, 2)

QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)

Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)

(A,1,2) (A,4,3)

(A,4,3)

(A,1,1)(A,1,1) (A,3,2)(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 82: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)

(A,1,2) (A,4,3)

(A,4,3)

(A,1,1)

(A,1,1) (A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 83: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)

QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)

(A,1,2) (A,4,3)

(A,4,3)

(A,1,1)

(A,1,1) (A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 84: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)

(A,1,2) (A,4,3)

(A,4,3)

(A,1,1)

(A,1,1) (A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 85: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)

QuickSort(A, 3, 2)

QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)

(A,1,2) (A,4,3)

(A,4,3)

(A,1,1)

(A,1,1) (A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 86: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)

(A,1,2) (A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 87: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)

QuickSort(A, 4, 3)

QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)

(A,1,2) (A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 88: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)

(A,1,2)

(A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 89: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)

QuickSort(A, 5, 4)

QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3) (A,5,4)

(A,5,4)

(A,1,2)

(A,1,2)

(A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 90: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3)

(A,5,4)

(A,5,4)

(A,1,2)

(A,1,2)

(A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 91: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)

QuickSort(A, 6, 5)

QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4) (A,6,5)

(A,6,5)

(A,1,3)

(A,1,3)

(A,5,4)

(A,5,4)

(A,1,2)

(A,1,2)

(A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 92: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4)

(A,6,5)

(A,6,5)

(A,1,3)

(A,1,3)

(A,5,4)

(A,5,4)

(A,1,2)

(A,1,2)

(A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 93: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)

QuickSort(A, 7, 6)

QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5) (A,7,6)

(A,7,6)

(A,1,4)

(A,1,4)

(A,6,5)

(A,6,5)

(A,1,3)

(A,1,3)

(A,5,4)

(A,5,4)

(A,1,2)

(A,1,2)

(A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 94: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5)

(A,7,6)

(A,7,6)

(A,1,4)

(A,1,4)

(A,6,5)

(A,6,5)

(A,1,3)

(A,1,3)

(A,5,4)

(A,5,4)

(A,1,2)

(A,1,2)

(A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 95: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)

QuickSort(A, 8, 7)

QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6) (A,8,7)

(A,8,7)

(A,1,5)

(A,1,5)

(A,7,6)

(A,7,6)

(A,1,4)

(A,1,4)

(A,6,5)

(A,6,5)

(A,1,3)

(A,1,3)

(A,5,4)

(A,5,4)

(A,1,2)

(A,1,2)

(A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 96: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6)

(A,8,7)

(A,8,7)

(A,1,5)

(A,1,5)

(A,7,6)

(A,7,6)

(A,1,4)

(A,1,4)

(A,6,5)

(A,6,5)

(A,1,3)

(A,1,3)

(A,5,4)

(A,5,4)

(A,1,2)

(A,1,2)

(A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 97: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)

QuickSort(A, 9, 8)

QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7) (A,9,8)

(A,9,8)

(A,1,6)

(A,1,6)

(A,8,7)

(A,8,7)

(A,1,5)

(A,1,5)

(A,7,6)

(A,7,6)

(A,1,4)

(A,1,4)

(A,6,5)

(A,6,5)

(A,1,3)

(A,1,3)

(A,5,4)

(A,5,4)

(A,1,2)

(A,1,2)

(A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 98: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Worst-Case Behavior

QuickSort: Worst-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 8)QuickSort(A, 9, 8)QuickSort(A, 1, 7)QuickSort(A, 8, 7)QuickSort(A, 1, 6)QuickSort(A, 7, 6)QuickSort(A, 1, 5)QuickSort(A, 6, 5)QuickSort(A, 1, 4)QuickSort(A, 5, 4)QuickSort(A, 1, 3)QuickSort(A, 4, 3)QuickSort(A, 1, 2)QuickSort(A, 3, 2)QuickSort(A, 1, 1)

Partition(A, 1, 8)Partition(A, 1, 7)Partition(A, 1, 6)Partition(A, 1, 5)Partition(A, 1, 4)Partition(A, 1, 3)Partition(A, 1, 2)

(A,1,8)

(A,1,8)

(A,1,7)

(A,1,7)

(A,9,8)

(A,9,8)

(A,1,6)

(A,1,6)

(A,8,7)

(A,8,7)

(A,1,5)

(A,1,5)

(A,7,6)

(A,7,6)

(A,1,4)

(A,1,4)

(A,6,5)

(A,6,5)

(A,1,3)

(A,1,3)

(A,5,4)

(A,5,4)

(A,1,2)

(A,1,2)

(A,4,3)

(A,4,3)

(A,1,1)

(A,1,1)

(A,3,2)

(A,3,2)

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 5 / 7

Page 99: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)(A,1,15)

(A,1,7)(A,1,7)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 100: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)(A,1,15)

(A,1,7)(A,1,7)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 101: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)(A,1,7)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 102: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)

QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)(A,1,7)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 103: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)

QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)

Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)(A,1,7)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 104: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)

QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)

Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)(A,1,7)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 105: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 106: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)

QuickSort(A, 1, 7)

QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 107: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)

QuickSort(A, 1, 7)

QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)

Partition(A, 1, 7)

Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 108: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)

QuickSort(A, 1, 7)

QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)

Partition(A, 1, 7)

Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 109: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 110: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)

QuickSort(A, 1, 3)

QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 111: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)

QuickSort(A, 1, 3)

QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)

Partition(A, 1, 3)

Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 112: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)

QuickSort(A, 1, 3)

QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)

Partition(A, 1, 3)

Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)(A,1,1) (A,3,3)(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 113: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 114: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)

QuickSort(A, 1, 1)

QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 115: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 116: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)

QuickSort(A, 3, 3)

QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1) (A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 117: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 118: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)

QuickSort(A, 5, 7)

QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 119: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)

QuickSort(A, 5, 7)

QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)

Partition(A, 5, 7)

Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 120: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)

QuickSort(A, 5, 7)

QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)

Partition(A, 5, 7)

Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)(A,5,5) (A,7,7)(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 121: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5) (A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 122: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)

QuickSort(A, 5, 5)

QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5) (A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 123: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5) (A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 124: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)

QuickSort(A, 7, 7)

QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5) (A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 125: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 126: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)

QuickSort(A, 9, 15)

QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 127: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)

QuickSort(A, 9, 15)

QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)

Partition(A, 9, 15)

Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 128: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)

QuickSort(A, 9, 15)

QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)

Partition(A, 9, 15)

Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 129: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 130: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)

QuickSort(A, 9, 11)

QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 131: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)

QuickSort(A, 9, 11)

QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)

Partition(A, 9, 11)

Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 132: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)

QuickSort(A, 9, 11)

QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)

Partition(A, 9, 11)

Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)(A,9,9) (A,11,11)(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 133: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9) (A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 134: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)

QuickSort(A, 9, 9)

QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9) (A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 135: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9) (A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 136: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)

QuickSort(A, 11, 11)

QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9) (A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 137: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9)

(A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 138: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)

QuickSort(A, 13, 15)

QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9)

(A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 139: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)

QuickSort(A, 13, 15)

QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)

Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9)

(A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 140: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)

QuickSort(A, 13, 15)

QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)

Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9)

(A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)(A,13,13) (A,15,15)(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 141: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9)

(A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)

(A,13,13) (A,15,15)

(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 142: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)

QuickSort(A, 13, 13)

QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9)

(A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)

(A,13,13) (A,15,15)

(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 143: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9)

(A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)

(A,13,13) (A,15,15)

(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 144: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)

QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9)

(A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)

(A,13,13) (A,15,15)

(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 145: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Best-Case Behavior

QuickSort: Best-Case Behavior

QuickSort(A, p, r)

1 if p < r2 then q ← Partition(A, p, r)3 QuickSort(A, p, q − 1)4 QuickSort(A, q + 1, r)

QuickSort(A, 1, 15)QuickSort(A, 1, 7)QuickSort(A, 1, 3)QuickSort(A, 1, 1)QuickSort(A, 3, 3)QuickSort(A, 5, 7)QuickSort(A, 5, 5)QuickSort(A, 7, 7)QuickSort(A, 9, 15)QuickSort(A, 9, 11)QuickSort(A, 9, 9)QuickSort(A, 11, 11)QuickSort(A, 13, 15)QuickSort(A, 13, 13)QuickSort(A, 15, 15)

Partition(A, 1, 15)Partition(A, 1, 7)Partition(A, 1, 3)Partition(A, 5, 7)Partition(A, 9, 15)Partition(A, 9, 11)Partition(A, 13, 15)

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

5

3

11

4

2

5

12

6

7

7

6

8

4

9

9

10

13

11

14

12

15

13

10

14

8

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

6

3

2

4

7

5

5

6

4

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

3

1

1

2

2

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

7

5

5

6

6

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

13

11

14

12

15

13

10

14

12

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

11

9

9

10

10

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

15

13

13

14

14

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

(A,1,15)

(A,1,15)

(A,1,7)

(A,1,7)

(A,1,3)

(A,1,3)

(A,1,1)

(A,1,1)

(A,3,3)

(A,3,3)

(A,5,7)

(A,5,7)

(A,5,5)

(A,5,5)

(A,7,7)

(A,7,7)

(A,9,15)

(A,9,15)

(A,9,11)

(A,9,11)

(A,9,9)

(A,9,9)

(A,11,11)

(A,11,11)

(A,13,15)

(A,13,15)

(A,13,13)

(A,13,13)

(A,15,15)

(A,15,15)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 6 / 7

Page 146: QuickSort · 1 The Partition Procedure 2 Algorithm 3 Worst-Case Behavior 4 Best-Case Behavior 5 Randomized QuickSort Parosh Aziz Abdulla (Uppsala University) QuickSort September 12,

Randomized QuickSort

Randomized Quick Sort

RandomizedPartition(A, p, r)

1 i ← Random(p, r)2 exchange A[r ]↔ A[i ]3 return Partition(A, p, r)

RandomizedQuickSort(A, p, r)

1 if p < r2 then q ← RandomizedPartition(A, p, r)3 RandomizedQuickSort(A, p, q − 1)4 RandomizedQuickSort(A, q + 1, r)

Parosh Aziz Abdulla (Uppsala University) QuickSort September 12, 2012 7 / 7