Analysis of Quicksort - University Of Maryland · The expected number of comparisons for Quicksort...

Preview:

Citation preview

The average number of comparisons for quicksort is

S(n) =

{0 if n = 0, 1∑n

q=11n

[S(q − 1) + S(n − q)] + n − 1 otherwise

The average number of comparisons for quicksort is

S(n) =

{0 if n = 0, 1∑n

q=11n

[S(q − 1) + S(n − q)] + n − 1 otherwise

S(n) =n∑

q=1

1

n[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

S(q − 1) +1

n

n∑q=1

S(n − q) + n − 1

=1

n

n−1∑q=0

S(q) +1

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=1

S(q) + n − 1 since S(0) = 0

Now what?

S(n) =n∑

q=1

1

n[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

S(q − 1) +1

n

n∑q=1

S(n − q) + n − 1

=1

n

n−1∑q=0

S(q) +1

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=1

S(q) + n − 1 since S(0) = 0

Now what?

S(n) =n∑

q=1

1

n[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

S(q − 1) +1

n

n∑q=1

S(n − q) + n − 1

=1

n

n−1∑q=0

S(q) +1

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=1

S(q) + n − 1 since S(0) = 0

Now what?

S(n) =n∑

q=1

1

n[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

S(q − 1) +1

n

n∑q=1

S(n − q) + n − 1

=1

n

n−1∑q=0

S(q) +1

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=1

S(q) + n − 1 since S(0) = 0

Now what?

S(n) =n∑

q=1

1

n[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

S(q − 1) +1

n

n∑q=1

S(n − q) + n − 1

=1

n

n−1∑q=0

S(q) +1

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=1

S(q) + n − 1 since S(0) = 0

Now what?

S(n) =n∑

q=1

1

n[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

S(q − 1) +1

n

n∑q=1

S(n − q) + n − 1

=1

n

n−1∑q=0

S(q) +1

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=1

S(q) + n − 1 since S(0) = 0

Now what?

S(n) =n∑

q=1

1

n[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

[S(q − 1) + S(n − q)] + n − 1

=1

n

n∑q=1

S(q − 1) +1

n

n∑q=1

S(n − q) + n − 1

=1

n

n−1∑q=0

S(q) +1

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=0

S(q) + n − 1

=2

n

n−1∑q=1

S(q) + n − 1 since S(0) = 0

Now what?

Use Constructive Induction.

Guess S(n) ≤ an lg n for some constant a and n ≥ 1.

Base case: n = 1: S(1) = 0 and a · 1 · lg 1 = 0.

Induction Hypothesis:Assume it holds for all positive integers less than n.So, S(k) ≤ ak lg k for 1 ≤ k ≤ n − 1.

Induction step:

S(n) =2

n

n−1∑q=1

S(q) + n − 1 where we left off

≤ 2

n

n−1∑q=1

aq lg q + n − 1 by IH

≤ 2a

n

∫ n

1

x lg xdx + n − 1 by integral bound

=2a

n

[x2 lg x

2− x2 lg e

4

] ∣∣∣n1

+ n − 1

=2a

n

[(n2 lg n

2− n2 lg e

4

)−(

12 lg 1

2− 12 lg e

4

)]+ n − 1

= an lg n − an lg e

2+

a lg e

2n+ n − 1

= an lg n +

[1− a lg e

2

]n +

a lg e

2n− 1

≤ an lg n for the induction to hold

S(n) =2

n

n−1∑q=1

S(q) + n − 1 where we left off

≤ 2

n

n−1∑q=1

aq lg q + n − 1 by IH

≤ 2a

n

∫ n

1

x lg xdx + n − 1 by integral bound

=2a

n

[x2 lg x

2− x2 lg e

4

] ∣∣∣n1

+ n − 1

=2a

n

[(n2 lg n

2− n2 lg e

4

)−(

12 lg 1

2− 12 lg e

4

)]+ n − 1

= an lg n − an lg e

2+

a lg e

2n+ n − 1

= an lg n +

[1− a lg e

2

]n +

a lg e

2n− 1

≤ an lg n for the induction to hold

S(n) =2

n

n−1∑q=1

S(q) + n − 1 where we left off

≤ 2

n

n−1∑q=1

aq lg q + n − 1 by IH

≤ 2a

n

∫ n

1

x lg xdx + n − 1 by integral bound

=2a

n

[x2 lg x

2− x2 lg e

4

] ∣∣∣n1

+ n − 1

=2a

n

[(n2 lg n

2− n2 lg e

4

)−(

12 lg 1

2− 12 lg e

4

)]+ n − 1

= an lg n − an lg e

2+

a lg e

2n+ n − 1

= an lg n +

[1− a lg e

2

]n +

a lg e

2n− 1

≤ an lg n for the induction to hold

S(n) =2

n

n−1∑q=1

S(q) + n − 1 where we left off

≤ 2

n

n−1∑q=1

aq lg q + n − 1 by IH

≤ 2a

n

∫ n

1

x lg xdx + n − 1 by integral bound

=2a

n

[x2 lg x

2− x2 lg e

4

] ∣∣∣n1

+ n − 1

=2a

n

[(n2 lg n

2− n2 lg e

4

)−(

12 lg 1

2− 12 lg e

4

)]+ n − 1

= an lg n − an lg e

2+

a lg e

2n+ n − 1

= an lg n +

[1− a lg e

2

]n +

a lg e

2n− 1

≤ an lg n for the induction to hold

S(n) =2

n

n−1∑q=1

S(q) + n − 1 where we left off

≤ 2

n

n−1∑q=1

aq lg q + n − 1 by IH

≤ 2a

n

∫ n

1

x lg xdx + n − 1 by integral bound

=2a

n

[x2 lg x

2− x2 lg e

4

] ∣∣∣n1

+ n − 1

=2a

n

[(n2 lg n

2− n2 lg e

4

)−(

12 lg 1

2− 12 lg e

4

)]+ n − 1

= an lg n − an lg e

2+

a lg e

2n+ n − 1

= an lg n +

[1− a lg e

2

]n +

a lg e

2n− 1

≤ an lg n for the induction to hold

S(n) =2

n

n−1∑q=1

S(q) + n − 1 where we left off

≤ 2

n

n−1∑q=1

aq lg q + n − 1 by IH

≤ 2a

n

∫ n

1

x lg xdx + n − 1 by integral bound

=2a

n

[x2 lg x

2− x2 lg e

4

] ∣∣∣n1

+ n − 1

=2a

n

[(n2 lg n

2− n2 lg e

4

)−(

12 lg 1

2− 12 lg e

4

)]+ n − 1

= an lg n − an lg e

2+

a lg e

2n+ n − 1

= an lg n +

[1− a lg e

2

]n +

a lg e

2n− 1

≤ an lg n for the induction to hold

S(n) =2

n

n−1∑q=1

S(q) + n − 1 where we left off

≤ 2

n

n−1∑q=1

aq lg q + n − 1 by IH

≤ 2a

n

∫ n

1

x lg xdx + n − 1 by integral bound

=2a

n

[x2 lg x

2− x2 lg e

4

] ∣∣∣n1

+ n − 1

=2a

n

[(n2 lg n

2− n2 lg e

4

)−(

12 lg 1

2− 12 lg e

4

)]+ n − 1

= an lg n − an lg e

2+

a lg e

2n+ n − 1

= an lg n +

[1− a lg e

2

]n +

a lg e

2n− 1

≤ an lg n for the induction to hold

S(n) =2

n

n−1∑q=1

S(q) + n − 1 where we left off

≤ 2

n

n−1∑q=1

aq lg q + n − 1 by IH

≤ 2a

n

∫ n

1

x lg xdx + n − 1 by integral bound

=2a

n

[x2 lg x

2− x2 lg e

4

] ∣∣∣n1

+ n − 1

=2a

n

[(n2 lg n

2− n2 lg e

4

)−(

12 lg 1

2− 12 lg e

4

)]+ n − 1

= an lg n − an lg e

2+

a lg e

2n+ n − 1

= an lg n +

[1− a lg e

2

]n +

a lg e

2n− 1

≤ an lg n for the induction to hold

Need

an lg n +

[1− a lg e

2

]n +

a lg e

2n− 1 ≤ an lg n

Need

1− a lg e

2≤ 0 =⇒ a ≥ 2

lg e

Set a = 2lg e≈ 1.39

Need

a lg e

2n− 1 ≤ 0 ⇐⇒ 2 lg e

(lg e)2n− 1 ≤ 0 ⇐⇒ 1

n− 1 ≤ 0

which always holds since n ≥ 1.

So,S(n) ≈ 1.39n lg n

Need

an lg n +

[1− a lg e

2

]n +

a lg e

2n− 1 ≤ an lg n

Need

1− a lg e

2≤ 0 =⇒ a ≥ 2

lg e

Set a = 2lg e≈ 1.39

Need

a lg e

2n− 1 ≤ 0 ⇐⇒ 2 lg e

(lg e)2n− 1 ≤ 0 ⇐⇒ 1

n− 1 ≤ 0

which always holds since n ≥ 1.

So,S(n) ≈ 1.39n lg n

Need

an lg n +

[1− a lg e

2

]n +

a lg e

2n− 1 ≤ an lg n

Need

1− a lg e

2≤ 0 =⇒ a ≥ 2

lg e

Set a = 2lg e≈ 1.39

Need

a lg e

2n− 1 ≤ 0 ⇐⇒ 2 lg e

(lg e)2n− 1 ≤ 0 ⇐⇒ 1

n− 1 ≤ 0

which always holds since n ≥ 1.

So,S(n) ≈ 1.39n lg n

Need

an lg n +

[1− a lg e

2

]n +

a lg e

2n− 1 ≤ an lg n

Need

1− a lg e

2≤ 0 =⇒ a ≥ 2

lg e

Set a = 2lg e≈ 1.39

Need

a lg e

2n− 1 ≤ 0 ⇐⇒ 2 lg e

(lg e)2n− 1 ≤ 0 ⇐⇒ 1

n− 1 ≤ 0

which always holds since n ≥ 1.

So,S(n) ≈ 1.39n lg n

Now that we are finished, we realize that

S(n) ≤ an lg n =2n lg n

lg e= 2n ln n

which is a more natural formula.

Theorem

The expected number of comparisons for Quicksort is ∼ 2n ln n.

NOTE: Could go back and do the Constructive Induction withS(n) ≤ an ln n, which would simplify the algebra.

Now that we are finished, we realize that

S(n) ≤ an lg n =2n lg n

lg e= 2n ln n

which is a more natural formula.

Theorem

The expected number of comparisons for Quicksort is ∼ 2n ln n.

NOTE: Could go back and do the Constructive Induction withS(n) ≤ an ln n, which would simplify the algebra.

Recommended