Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 21

7.

Quicksort

Hsu, Lih-Hsing
Computer Theory Lab.

7.1 Description of quicksort


 Divide

 Conquer

 Combine

Chapter 7 P.2
Computer Theory Lab.

Q U IC K S O R T ( A ,p ,r )
1 if p  r
2 th e n q  P A R T IT IO N ( A , p ,r )
3 Q U IC K S O R T ( A ,p ,q )
4 Q U IC K S O R T ( A ,q + 1 ,r )

Chapter 7 P.3
Computer Theory Lab.

Partition(A, p, r)
1 x  A[r]
2 i p–1
3 for j  p to r -1
4 do if A[j] ≤ x
5 then i  i + 1
6 exchange A[i]  A[j]
7 exchange A[i +1]  A[r]
8 return i +1

Chapter 7 P.4
Computer Theory Lab.

At the beginning of each iteration of the loop of


lines 3-6, for any array index k,

1. if p ≤ k ≤ i, then A[k] ≤ x.
2. if i + 1 ≤ k≤ j -1, then A[k] > x.
3. if k = r, then A[k] = x.

Chapter 7 P.5
Computer Theory Lab.

The operation of Partition on a sample array

Chapter 7 P.6
Computer Theory Lab.

Two cases for one iteration of procedure


Partition

Complexity:
Partition on A[p…r] is (n)
where n = r –p +1

Chapter 7 P.7
Computer Theory Lab.

7.2 Performance of quicksort


W o rs t-c a s e p a rtitio n :

T (n )  T (n  1 )   (n )
n n 2
   (k )   (  k )   (n )
k 1 k 1

B e s t-c a s e p a rtitio n :

T (n )  2 T (n / 2 )   (n )
 T ( n )   ( n lo g n )

Chapter 7 P.8
Computer Theory Lab.

Balanced partition T ( n )  ( n log n )


T (n)  T (9n / 10)  T (n / 10)  (n)
 T (n)  (n log n)
Chapter 7 P.9
Computer Theory Lab.

Intuition for the average case T(n) = (n log


n)

Chapter 7 P.10
Computer Theory Lab.

7.3 Randomized versions of partition


R A N D O M IZ E D _ P A R T IT IO N ( A ,p ,r )
1 i  R A N D O M ( p ,r )
2 e x c h a n g e A [ p ]  A [ i]
3 r e t u r n P A R T IT IO N ( A ,p ,r )

R A N D O M IZ E D _ Q U IC K S O R T ( A ,p ,r )
1 if p  r
2 th e n
q  R A N D O M IZ E D _ P A R T IT IO N ( A , p ,r )
3 R A N D O M IZ E D _ Q U IC K S O R T ( A ,p ,q )

Chapter 7 4 R A N D O M IZ E D _ Q U IC K S O R T ( A ,q + 1 ,r ) P.11
Computer Theory Lab.

7.4 Analysis of quicksort


7.4.1 Worst-case analysis
T ( n)  max (T ( q )  T ( n  q  1))  ( n)
0  q  n 1

guess T ( n )  cn2
T ( n)  max (cq 2  c ( n  q  1) 2 )  ( n)
0  q  n 1

c max ( q 2  (n  q  1) 2 )  ( n)
0  q  n 1

 cn 2  2c ( n  1)  ( n)
 cn 2
pick the constant c large enough so that the 2 c( n  1 ) term dominates the
( n ) term.
 T ( n )  ( n2 )
Chapter 7 P.12
Computer Theory Lab.

7.4-2
S
howth
at q (nq) a
2
chie
vesam
2
ax
imu
m o
ver

q1
,2 1w
,.....,
n h
enq1 o
r qn1

a
ns: 先
令 f(q
)q (nq
) 2 2

0 n/2 n

次微: f (q)2q2(nq)4q2n
分 '

n
令 '
)0 4
f (q qn
2 0 q (極小
值)
2


次微: f (q)4 (開
分 口向
''
)


為 1qn1所
以 f(1
)f(n1
)1(n) (
1 相 對
極大)
值2

Chapter 7 P.13
Computer Theory Lab.

7.4.2 Expected running time


 Running time and comparsions
 Lemma 7.1
 Let X be the number of comparisons performed
in line 4 of partition over the entire execution o
f Quicksort on an n-element array. Then the run
ning rime of Quicksort is O(n+X)

Chapter 7 P.14
Computer Theory Lab.

we define
X ij  I {zi is compared to zj},

n 1 n
X  X ij .
i 1 j  i 1

n 1 n 
E[ X ]  E    X ij 
 i 1 j i 1 
n 1 n
  E X ij 
i 1 j  i 1
n 1 n
  Pr {zi is compared to zj}
i 1 j  i 1

Chapter 7 P.15
Computer Theory Lab.

Pr{zi is compared to zj} = Pr{zi or zj is first pivot chosen from Zij}


= Pr{zi is first pivot chosen from Zij}
+ Pr{zj is first pivot chosen from Zij}
1 1
 
j  i 1 j  i 1
2

j  i 1
n 1 n 2
 E[ X ]    .
i 1 j  i 1 j  i 1

Chapter 7 P.16
Computer Theory Lab.

n 1 n 2
E[ X ]   
i 1 j i 1 j  i 1
n 1n  i 2
       
i 1 k 1 k  1
n 1 n 2
       
i 1 k 1 k
n 1
       O (lg n)
i 1
      O(n lg n)
Chapter 7 P.17
Computer Theory Lab.

another analysis
T(n) 
1 n 1
( T (1 )  T ( n  1 )   ( T ( q )  T ( n  q ) )   ( n )
n q 1

T (1 )  1  1
  ( T (1 )  T ( n  1 ))  O ( n )
T ( n  1 )  O ( n 2 )  n

T(n) 
1 n 1
( T (1 )  T ( n  1 )   ( T ( q )  T ( n  q ) )   ( n )
n q 1
1 n 1
 (  T ( q )  T ( n  q ))  ( n )
n q 1
2 n 1
 (  T ( k ))  ( n )
n k 1

Chapter 7 P.18
Computer Theory Lab.

guess T ( n )  an log n  b

2 n 1
T ( n )  (  a k lo g k  b )   ( n )
n k 1
2 a n 1 2b
  k lo g k  (n 1) (n)
n k 1 n

n 1 n 2 lo g n n 2
W e w il l p r o v e  k lo g k  
k 1 2 8

Chapter 7 P.19
Computer Theory Lab.

2 a 1 2 n 2 2 b (n  1)
T (n )  ( n lo g n  )    (n )
n 2 8 n
an
 an log n   2 b   (n )
4
an
 an log n  b  (  ( n )  b  )
4
 an log n  b

an
C h o o s e a la rg e e n o u g h s o th a t   ( n )  b .
4
 T ( n )  O ( n lo g n ) .
Chapter 7 P.20
Computer Theory Lab.

n 1 n / 2  1 n 1
 k log k   k log k   k log k
k  1 k 1 k  n / 2 

 n / 2  1 n  1
 (log n  1)  k  log n  k
k 1 k  n / 2 

n 1 n / 2  1
 log n  k   k
k  1 k  1

n ( n  1 ) log n 1 n n
  (  1)
2 2 2 2
n 2 log n n 2
 
2 8
if n  2 .
A n o th e r a p p ro a c h : U s in g
1 2 1
 x ln x d x  x ln x  x 2
Chapter 7 2 4 P.21

You might also like