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


Recommended