0% acharam este documento útil (0 voto)
164 visualizações30 páginas

Projeto de Algoritmos

Enviado por

Antonio AF
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
164 visualizações30 páginas

Projeto de Algoritmos

Enviado por

Antonio AF
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 30

Nivio Ziviani

Nivio Ziviani
Outras Obras
Ph.D. em Ciência da Computação, Univer-
Projeto de
sity of Waterloo, 1982. Professor Emérito
da UFMG, Professor Titular do Departa-
mento de Ciência da Computação da Algoritmos Projeto de Algoritmos e Lógica de Programação
Marco Antonio Furlan de Souza,
Marcelo Marques Gomes,
Marcio Vieira Soares e

Algoritmos
UFMG, onde coordena o Laboratório para
Tratamento da Informação (LATIN). Co- Ricardo Concilio
com implementações em Java e C++
fundador de duas empresas especializadas Compiladores: Princípios e Práticas
em tecnologia de busca na Web, a Miner Kenneth C. Louden
Technology Group, vendida para o UOL / Algoritmos e estruturas de dados formam o núcleo da ciência da computação, sendo os componentes
Grupo Folha de São Paulo em 1999, e a básicos de qualquer software. Aprender como programar computadores está intimamente ligado a Estrutura de Dados e
Akwan Information Technologies, algoritmos, já que programas são formulações concretas de algoritmos. Aprendê-los é crucial para
qualquer pessoa que deseja desenvolver softwares de qualidade.
com implementações em Java e C++ Algoritmos em C++
vendida para a Google Inc. em 2005. Autor Adam Drozdek
de três livros na área de algoritmos e co- Esta obra apresenta os principais algoritmos e estruturas de dados conhecidos. As técnicas de projeto Introdução à Ciência da Computação
autor de mais de cem artigos técnicos nas de algoritmos são ensinadas de forma simples, seguindo o paradigma de orientação a objetos, por
Ricardo Daniel Fedeli,
áreas de algoritmos, recuperação de infor- meio de refinamentos sucessivos até o nível de uma implementação na linguagem Java, e todo
programa Java tem um programa C++ correspondente nos apêndices. Enrico Giulio Franco Polloni e
mação, compressão de textos e áreas corre- Fernando Eduardo Peres

Projeto de Algoritmos
latas. Co-criador da conferência SPIRE Destaques:
Introdução aos Fundamentos da
(String Processing and Information § O livro cobre estruturas de dados básicas, contendo listas lineares, pilhas e filas; algoritmos de

com implementações em Java e C++


Retrieval) e Coordenador Geral da confe- ordenação e de pesquisa em memórias primária e secundária; algoritmos em grafos e processamento Computação
rência ACM SIGIR 2005, a mais importan- de cadeias de caracteres; técnicas de análise de algoritmos; paradigmas de projeto de algoritmos; e Newton José Vieira
te do mundo na área de recuperação de in- estudo da complexidade computacional de algoritmos. Modelos Clássicos de Computação
formação. Membro da ACM (Association § Ênfase em tipos abstratos de dados, programação modular, programação orientada a objetos, Flávio Soares Corrêa da Silva e
for Computing Machinery), EATCS encapsulamento e independência de implementação de tipos abstratos de dados com reaproveita- Ana Cristina Vieira de Melo
(European Association for Theoretical mento de código.
Projeto de Algoritmos: Com
Computer Science), IEEE Computer § Informação sobre o comportamento teórico e prático dos algoritmos, fornecendo uma base de Implementações em Pascal e C –
Society e SBC (Sociedade Brasileira de comparação entre os algoritmos. a
Computação). 2 Edição Revista e Ampliada
§ Mais de 156 exercícios propostos dos quais 58 com soluções; 195 programas em Java e 195 Nivio Ziviani
programas em C++; 164 figuras ilustrativas.
Fabiano Cupertino Botelho § Material de apoio para professores na forma de transparências e os códigos em Java e C++
podem ser obtidos no site www.dcc.ufmg.br/algoritmos-java.
Mestre em Ciência da Computação,
Universidade Federal de Minas Gerais,
2004. Aplicações
Atualmente é aluno de doutorado do De- Livro-texto para cursos de Ciência da Computação, Matemática Computacional, Sistemas de Infor-
partamento de Ciência da Computação da mação, Engenharias de Computação, de Controle e Automação, Elétrica, Eletrônica e Mecânica,
Universidade Federal de Minas Gerais, entre outros. Pelo fato de apresentar muitas implementações de algoritmos práticos, o texto é igual-
onde trabalha com funções hash perfeitas mente útil para profissionais engajados no desenvolvimento de software nas linguagens Java e C++.
mínimas para representar eficientemente
um dicionário. Desenvolvedor e mantene-
dor de uma biblioteca de software livre
intitulada CMPH, que contém todos os
algoritmos desenvolvidos durante o seu
doutorado. Especialista em desenvolvi-

Nivio Ziviani
mento de software orientado a objetos nas
linguagens Java e C++.

Para suas soluções de curso e aprendizado,


Consultoria em Java e C++ de
visite www.cengage.com.br Fabiano Cupertino Botelho
Dados Internacionais de Catalogação na Publicação (CIP)
(Câmara Brasileira do Livro, SP, Brasil)
Ziviani, Nivio
Projeto de algoritmos : com implementações em Java
e C++ / Nivio Ziviani ; consultoria em Java e C++
de Fabiano Cupertino Botelho - São Paulo: Cengage
Learning, 2011.

1. reimpr. da 1. ed. de 2007.


Bibliografia.
ISBN 

1. Algoritmos de computadores 2. C++ (Linguagem de


programação para computadores) 3. Dados - Estruturas
(Ciência da computação) 4. Java (Linguagem de progra-
mação para computadores) I. Botelho, Fabiano Cuperti-
no. II. Título.

06-7021 CDD-005.1

Índice para catálogo sistemático:

1. Algoritmos: Programação de computadores: Implementação em


Java e C++: Processamento de dados 005.1
Projeto de Algoritmos – Com implementações © Cengage Learning Edições Ltda.
em Java e C++
Todos os direitos reservados. Nenhuma parte deste livro po-
Nivio Ziviani
derá ser reproduzida, sejam quais forem os meios empregados,
sem a permissão, por escrito, da Editora.
Aos infratores aplicam-se as sanções previstas nos artigos
Gerente Editorial: Patricia La Rosa , , 6e da Lei no .6 , de de fevereiro de 8.
Editora de Desenvolvimento: Ligia Cosmo
Cantarelli
Supervisor de Produção Editorial: Fábio Gonçalves Para informações sobre nossos produtos, entre em
contato pelo telefone
Supervisora de Produção Gráfica: Fabiana Alencar
Albuquerque Para permissão de uso de material desta obra, envie
seu pedido para [email protected]
Produtora Editorial: Renata Siqueira Campos
Copidesque: Mônica Cavalcante Di Giacomo
Revisão: Andréa Vidal © Cengage Learning. Todos os direitos reservados.
Composição: Nivio Ziviani e Fabiano Cupertino
Botelho ISBN- :
Capa: F.Z.Dáblio Design Studio

Cengage Learning
Condomínio E-Business Park
Rua Werner Siemens, – Prédio – Espaço
Lapa de Baixo – CEP - – São Paulo – SP
Tel.: ( ) 66 - – Fax: ( ) 66 -
SAC: 8

Para suas soluções de curso e aprendizado, visite


www.cengage.com.br

Impresso no Brasil.
Printed in Brazil.
1 2 3 4 10 09 08 07
 
  

   

 
  
 

 
 
 

 
  
 

 
      


    
 
!"#$ %
&'()(*+,-./

!01%2 
 
  

 
 
   
 
 3 #

      10
34  3
2
7


 8
33 
   
      

5   

  
  4  


   
  
 4 
 
6 :   
4           9
2  
        
 43 ; !3  

 4   <   9 
= 
  
5       

 <
     > !
8

      
  
4   3
   3  3  3   
3    5

 

  
 8  < 
 3 ?> 

 3
3    3 5    
             0
8    
  = 
5 

  
       
0
  
5 43   6  5
    3
 
  
 4
    
    3
  5
 
 
  A  
@     3 0   
  
  3  
 0
 
 
 
 
 3
 <
    5         

 

B 3
3 <  
4   3     <
2
   4   
1  5 
FG     
P       FG       PM

K CD E HIJEHI K KMNO KI M OI Q JKR E E HIOI Q JKR KMNO KI
JEHICS4CL CC  C C  CD 
< CL<TC C C
      4 4 4 8    S   
= 
 T

 5
8    
  
  

    
  
 
4 3
  U
   

    <
T
V 4  
   
  

3

  
  
8
  
3 
  

  
  T
 < 4  3 
5
WXX YZ[\]^[_]`ab[ZX^c[d

 8   
 


T    
4
  3 

S =   T
 3
  
4 4 4 3T  0
 e 
 U  5   
  
  4 S5    
 
     

 
   
      0
<      
 S  A   T
 4    

 e  

 

 U
3< 
  

   
  < 
 

  


  

 
  5   4 
 <
  
 4  
  
f4   
 
  
 

S  T
  4   4    3   A   
   

    34  
   A 
  
 g
4  
  0
         
5 e  
 3 A !   
        


    
 
 = 9  
T
 8
T    
e

  
  
   9!    A
    
 
 
  
  
5
A    

   
  
    0
A 
 483
3  35    9 0
  5     
 
  3    
     
 <>  h   
 3  
3  
  48<     
  

  U0
3
3 5   
$  
 < ++  

  0   
 
5e  
!  
 48
    i     
   <  
  0
   5  < T     <   
      

   3 
ji20k
l mHn oGKFEnpEqEDrIHPEsttu
vCCMJIREKCFHM CnwNOCMGCnxyFGHPEsttz
{|}'~/

€‚ƒ„…† ‡………
ˆ ‰Š‹€†ŒŽ†     ˆ
3  
‘V !h  


  ! 4      3
                V
  h
                 
 ‘ h ! ’
5e            ‘
      A
5   
 3 
‘   !              “•
”“ h$V    

!  !3                    VV”

 “ 3    5S S48                 V”
““‘V     $  
3$      ”• V “
  
i4 <5 
  ++                  ””
  3 
AT                                    ”“
– —€— Œ…˜™—š Œ€†›‹†Œœ˜†€…‹™†š ž“ˆ
VVV 6   

5                                 “”
j 

 VV 6     j 

                  ““
V V  V @
  g  j
                 “Ÿ
‘ 
V” !3  h                       Ÿ“ 
 
VV“ i 
                            ŸŸV
VŸ¢ 3 5    ¡
                           Ÿ 
VV  !!3 
 
                             ¢¢”V
  i4 33  !
 A                          ¢”

AT                                    ¢“
£ YZ[\]^[_]`ab[ZX^c[d
¤ ¥š‹€‹€—š Œ¦—Œ†š§ƒš…„—š ¨ ˆ
‘ ?  ?
‘ 6 5 ?       !

  
  8           ‘

‘V 6   5           


!
0j< ?                        “
‘V             8          ©‘V
‘V 6 5        !  
 

        ©
‘VV 6   5        
!
0j<                        ©‘
‘‘ ’                                  © 
‘‘ 6 5 ’  !8         © 
‘‘V 6  j  5 ’  

 ••
i4 !
0 <                         
 T  3                              ••
A                                     •
ª ”«€ŒŠ—Ž† ˆˆˆ
 ”S56
 
     
                       ”
“
”V S5  ¬ 5            
5 6 5                     ¢          
”‘ S
¬                                 
”” @
­                              V•
”“ ®                               V”
”Ÿ  5                    ‘
”¢ S5                             ‘“
”V S 5A                            ”V
”V 6 5i¯          ”‘
”VV 6  5     ¬5 ¬
4 
5     ”“
”V‘  5 e                        ” 
”V” 65 <                        “•
”V“ @
­  A                        “V
 Ti4

A 3                               Ÿ•
                                    Ÿ
ž š° …𗁙±™²€…—€…™ƒ€…— ˆ³ˆ
“  
 ¬´                            ¢V
“V  
 i                             ¢”
“‘ µ   
i           i              ¢“
“‘ µ i  
  i       ¢“
“‘V µ     
          •
“”  
   
“” h3                               ©©
“”V      · GK  ¸                   ©
““ h < 5 ¶ CN Mm                   ©“
““ ’
5e h <5                    ©¢
¹ºc»ZX[ £X
““““‘V ?   4                        © 
““” ·NGK5   !
                      ©©
 
i4 C Mm <                          V•‘
A  T 3                               VV“
 
                                   Ÿ
¼ š° …𗁙±™²€…—½„ŠŒƒ€…— ––³ 
Ÿ 
5      
Ÿ ¯
      
¬
           VV
  
               VV‘©
Ÿ
ŸV ! ¬  V 6  
 ´ 6A  5   
¬     35           VV‘“V
ŸV   ¾   !     

                 V‘¢
Ÿ‘ µ  
i                            V”•
?
ŸŸ‘‘ µµ i                             V”
ŸŸ‘‘”‘V ! 
 
?        i                VV“
   µ “‘
 
i4   
5e                       VŸ“©
?

A  
 T 3                               VVŸVV

³œ ˜†€…‹™†š™¿€—‚†š
¢¢ 5e 4i                            –¼³ V Ÿ 
¢
V Sh  !     
¢¢V 6 5 2  !<         8          V ¢‘V
   8  =
       V
V V 6    5  j      !  =   
?          g      V¢Ÿ 


 !
 0 < 
¢V‘ 6 5 ?  !8=g  ¢
¢ ” !
  8    
                          VV ©
¢‘ i¢
 V 3
 <
  = 6   5 e 
h    h                    V ‘
¢‘‘V h   ¯
5!
              
 
<!T          V ¢         V Ÿ
¢¢” i
 ? 3
                  
5h 3                          V©V         V  
¢¢Ÿ“¢ S 
    ’                        V© ”¢
µ
 ¢ ¢ ! T  
S  4
  µ
    T VV©© 
 
3   
¢¢¢¢V !31­                       ‘••
¢¢    ‘!  3





 
                      ‘•”
‘•“
 ! 4      
  
® 
   
3<                   ‘
 © Sh                
ATi4  3                               ‘¢
                                   ‘¢
¨ €†„šš—™ Š ‹† Œ À — Œ …—š Œ À —€—„ ‹€š ¤–ˆ
                             ‘V
£X YZ[\]^[_]`ab[ZX^c[d
    A                       ‘‘‘Ÿ V”
 V  V 
 
 
! A                      ‘”V
 V  @
     
     
                      ‘”V
  V‘V   h®AÁ ?3
3
g       
          ‘”‘
             ‘””
 VV”  
5
 
  g    
®
Ág vÂJEN             ‘““
 i4
V“  
  h A                      ‘Ÿ 
 T  3                              ‘¢‘
A                                     ‘¢”
à €† ĝ™—šN P ÅÀ†™Æ‹†œ˜†€…‹™†šœÆ€†‡…™—Œ†š ¤³³
© ©4! 3NP0 

0   

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

‘¢ 
‘ 
© V !    N P 0   N P 0 <T             ‘ ‘
®
©V ©
 T   !
 3   ! A                     ‘‘©•

VVV !®
 
3T  
 A   4 
  g  h  
         ‘©”
  
©©V‘ !3 ! A N P04  0        ‘©©“
 Ti4
A 3                    
NP
   
                                    ”•‘      ”•‘
œ€†˜€—™—š™À++ Œ†À—ÆÇ‹†ˆ ªˆž
§ €†˜€—™—š™À++ Œ†À—ÆÇ‹†– ª–³
À €†˜€—™—š™À++ Œ†À—ÆÇ‹†¤ ª¤¤
¦€†˜€—™—š™À++ Œ†À—ÆÇ‹†ª ªªÃ
¥€†˜€—™—š™À++ Œ†À—ÆÇ‹†ž ª¼ž
È €†˜€—™—š™À++ Œ†À—ÆÇ‹†¼ ªÃ¤
¿€†˜€—™—š™À++ Œ†À—ÆÇ‹†³ žÉž
Ê€†˜€—™—š™À++ Œ†À—ÆÇ‹†¨ ž¤ˆ
‰ €†˜€—™—š™À++ Œ†À—ÆÇ‹†Ã žžˆ
Ë €†˜€—™—š™À++ Œ†œÆÌŠŒ…„Í žžž
Í΁šÆ†š‹—𯗀—¥‡€„Ç„…†š½„…†Š—Œ†š ž¼ž
À—€—„‹€šœ½À‰‰ žÃ³
΁‚€ÌŠ„…—š§…ĝ…†˜€ƒÏ„—š žÃÃ
ЊŒ…„Î™…šš…ц ¼ÉÃ
Ò'(Ó}Ô~/

   
 
5 
 3  !   0
   8 3       A 5
  
    
 
53e  

    
 
     T    <
 
   A
 0

3
94
  S  3    

3    

  

      <    2 
  0A

 
   
  e  
5    
3    
      
  A  9
3

5    
3 8      3 
 5
!     8  
 548 $ 3        3
    3 
 5 3
3  


$  
    T 

=  
 h   3
4    
 3
 T  
        A     
       
++

 E Õ3
3 F    
ÕIHÖEJHPE×FmHIKJDHNRHDØDOFEDEMJCÙÚEN
D CNRC E o
ÛÜÝÞßàáÜ
S      
2  5 
0

   3 5  
   
   4
   

   T 3<
  
  
3

    
  T    

N P0   

 3
9US 
   
 
  3  

  4   0
 
   A
5 
 
 3
$         0
   3 3
3 
£XW YZ[\]^[_]`ab[ZX^c[d
V 3  8 

3 U 
5 
 ¸4 3
    
35 ¡ 3 3
  3  A   
    ¶   
      
‘  

  4  U      
”  ­5 U   5    
5
    
  
 
     5 4 
       5 
   

­  A U 5    5   < 
“ 4   
  G  GK U  
   
G GK ´  
 
    
 CN Mm
   CN Mm <
Ÿ i   
  
U ´A0
 
¢ !3 3< U
   
 5  4
 <
    4

 0
3
  
5T  3
  
  < 
   
3     
   3< 
   
 e   
  U 4
A A 
      A  3
3

©  4  N P 0 U    N P 0    T  
N P 0 <   <0
     ­ 3 A  
 0
5 T    
   4
A08 
   3   A     
   
<  
 3   A      ЊŒ…„€™…šÅ
š…ц 6   4 
2
e  


 A  4


  !  
<  
3     5   4  
3  
 
   
 <5e 
  
âãÝäåæäßÝç áßèéÜäéæêæëìÜ
3
3 3
!3  5 

$ 2    
 $5       
   
    
       3   
 3
4    
   
4   83  
 2A    4    
 
      ++
 
          
g e  4 S8
   
   
   
     
    5 e    4   
     5   5 
5 < 
A 

 4  
!
  3  
 $  
++ 
 3
 48       

 48     3
48 5 
  
     ! 3 5   

 
 
 
  
 
 
 
83

 
   
  
  
     
4 

     

 <  5e 
YZ]í»îX[ £W

 j
   3
  
 3 4 
    
48   4  
 3

5
 
 
 3
=5 
 
5 
  4
<
     0
   
  
  
   3 A 8  3 
   
5  



 
 
  5    


 3  
  
  3  

0


3 ï
 
    

   
  3 
 
   5  S
A    3   3<

 
 4  
   2 
 3  0
<    5  3< 

ðÜèéÜñßççÜé
S        
3 
5  03
5A    
    
 2     0A
 
   
  < 5    3    

!
 3      

     ò 
=   
  

¸ 
 
 8 
 

 
T  3 5 ¶
A  
 

  3
3

  
5 ++   $
      
25
¯ e    <
2    g 0
’    
       U  4

!3

  


=< 

 6  
 i0
= 
5  

¬  
  56<
 5    3
  3  

5 Ÿ•
!

 
    B   ¡
    
5 ! 

 0

3
3
4  3
   5       
$     
3 
   
5 ï   3    0
   

       

5

!3

  


=<  = 
 66  
 i0
 
5 
 
¬ 
 
 56< 
5    3 

5 Ÿ•
 3
!
 
     B    ¡
    
5 
  3
U 
5
ï  3 5  ­     U 5
 5    

   
 
    
   3 ´  A  4 
 0
5
 <      
 
4¶GCNGKMm¸      
  
U     
40
  5      5  U   
 
 U
  A  ´ i 
   
         
  A   


 3  

   666 
!  
 i0

 =< = 
5 

£WX YZ[\]^[_]`ab[ZX^c[d
¬   6<

5  5  3Ÿ•
     
 
4    8 
  


3 3

   
3 U  
8    3
4  N P 0  
T  3  A0    
  3   
3<  
      
8!    =! 3
     
 
 
5 3   



            Ÿ•  


 8 3

 
3  
U 3
   43   
 3<    3
  

T  3  A               0
  
 3  
NP
0
4S   3 

     
      0
8 
       
S   3          

  <

3  8    

  
3  2      
   4     
T V    
  3
  
 8 5 ¡ 3  


 5<    
 T
  
T AT ! =1   
!    T   4   !3
 A T 
  

   

 e   
 
 T  
   A
  

 e     4
4
 
     
34 

 A      

S 4    2  
       
A
      !   A T       
     

4  5 23 2
h  4 T
   
 


 
48   
    < =        
44 T

4
   S
  5
 

        3 < =   3  
 443 
  


 <=  3  
  T
A 
 8
  =  
 
  
 
   <   

     8
  3
  <
A
   
 4
5 < 
     
     =
    3 
 
  A 0
 
8


 =    
=  38!  0


=    l K   ó   
 

  <

    ÕHNJ

  RI

3 O J
Õ  p
¶ r   ¸   

  
 

 
  0



 IHôNEI
lRIKOJ 

 
 Õpó !  =õ 
  ÕHNJ
4 NKJE5>>>
<34 3 0
8
YZ]í»îX[ £WX
ðÜöçÞåáæÝÞß
S  
  3 
    8
     h    34    
3
3    

 

 
  
    
 
     
<      3   T    0
5        
3  
  < 5e
 !    4   T 
 8483   
 
   
       
  <   3
   3 5   
 
  
       
 <2

 
 T 
<     3  <    
 8!3  
  =
3   < 
        
            8 
   
   

 3  

 5 3  ï    
  5   0
      
         
3
  A  =  3
 5   4
4   
 

  
  
 
3 
 
 8  
      !      

 

    T 
 
     
 0
2    
     

        

  A 3 
 

 

 

  
              ! 3
     A

ðÜèéÜ÷ççãÜÝæø
  A   
4  
2    
   3
    
 8
 <  

   
        
       e
5  
3    

  


3  ! 3   
e 4 5  
 3  3

A     5


4  
     
 
5e


   A  
 
   
 3           
$S 3  5
   e 
    

    
    

  3
3
   5
A  
N$KJE  A
5
++
S 
 3  P $
ú  r û 
++      
F 4  
   
 8 5ôôô ù RR
 ùy
 D m
ù I C mHI KJD HNÖ
ü CýC 

     

   =    
 3     
  
A
 
 
 
++

ðäéæáßþãêßÝÞÜç


 
3  93 
3   “4

T 

  


8  e  


 !3 5   
  T0

£WXX YZ[\]^[_]`ab[ZX^c[d
   
i   
j4   !4 ®  
’  ? !B!  <
$ 
?
 
 ?
    
j 0 
ÿ    4
   
   i 4 ®   $ 3 S  ’
  
  

  

 $   34
    ’   $    2   T 

  ? h  
  µ 4
  
 

   
!4 4 ? ¬ 
i    ?
i
2
   ! 
!



 
 
?

2¬
     ¬  233  

 T  B
!j3  ® 
 ?i 
  4 j! S      ’  
 ’ j4 ¬ i3 j40  
’    
¬
2 j ¡3’ j
h ¯3!
3

 
’ ! f3 $ f3 h=
S   4     2   8
 ’  4 
  i      0
 3  $ 
   4    
  <

  2 
 4  !
­   
  
3   ’
 5 5     5   5
5  3 4       @
  
AA 4
        AT 
 
 ! j  i20k 35
3   T
   4 0
33     8 
  3i
!   
3
A¯     B   
5 j 4¬  g
  
i3 
3 e 4 3  3
3 $++    
  <  
   ­
 4
  3 35 
 0


  B 
! ?

   ’ h     6
  
 
?  
!    
4  e  
  < 2   

 4
  A 
  5   

g ’  0   S    A            =   
 3
5  0 
 5
 4
T 3 
 
3 
    
3
 
5          
666  !
8  !3    ! 

3

  3  66

5 !3  
  
 
i
 
3
  
¯  B    

¬ i
 
 j 
 ¬4! 
!
  
  
  
4  ih    ¬  
 ’ 
6
  i     ’  T  
  ¬
2
j j4

 j
   j  0
  ®     
   j4 

µ¬’
         3 ?    ¬ 3 !
3

h 
j 
!   
      03 
5  
 
A   4 5      
i4
3  4
 
  
i   
  
 
   !
  

   
 
  
      



  ¬  !  
 ’ 
 
  2  
   !
3j4  hAA 
     ’  
A  ¬
2 4 
 !98  0
2 ¬
    



 ?3!
 ¬
  3
 j 
 i 
   f    

  
  g 3 0
  
      
   U   
 S   !     
5   ?h7    3
  <5

YZ]í»îX[ £X£
A   3
’         5
   5 4$ GCNGKMm < 
j¬   

  A

   3
3    ++    0
5    $

 ® 5 5
A  ?  5  3 4
    
 

j  4 
      

   A
T 
  h  
     
3      
    e 3 0
5!    $
     !   

 i

$9 4®  fi   ¬  !  T     
?

   ! 43  ’ 4   !  ’   ’    
   


h    
  5 ®!8¯ 3 6! @ ­ $
0
?
j !  1= S
 1
 
 ? 
    


 
 $
¯ 2
2  ! B           !
4i ?  j  i!
 ¬
2 4 0
 ¯
 3  
 e      

  ’T S ¬?9 ¬  S
     <   ! A 
j3
 ¬ 
35
’     4 "     0
  T h 
 3
 
 38 
’ "’õ   "
õ  8
 
= j

  6<     U    6 ’ 
h0 S ““V• ¢õ•V0“i 0
   
5
 
"! 4 5
 
  j 


5     6< 5  f f f   
“V•©Ÿõ©”0   
h 
 4  h    
 2     
<        



  3    
   <  5   A    
     
ÿ
vEFHFG·HIPKqHMJE
xy H Esttz
££ YZ[\]^[_]`ab[ZX^c[d
èéßñ þãÜáÜÛÜÝçåøÞÜé æ æß Û++
 

 A  3


3
3
5 

 8
!    !3  

     <    
4

9
 
 

   A
 
      
    8 
   3 


    
 
      3        
3 <    <5
     

     2   ÿ 4  S43


 <   
   
 
 4 5e  3   

   $ 0
       <
2
  
 e 5    3 <   
  
5 
 
  
 3 5   
 < 
 

 5    
5 3
  
    
 < 0

    4 8    
5e     
 
 3  <   
S 
 
3 $$++ <    <43   

 T2 
A       

 
      length
   

 
    T A 


 ++  
         $

  
  ¬ 
   T 
  3 3 
  $ !   
5e     <    
   
   4 

  


 
 3     
    
     =  
 
 <      
   
A   T++     3   $    ´=     
   3     
      
      <  
     
   
 
3   $ 3 ++      5 <     

3    3   ï   < T         4 

25      4       3    3  ï  
  
      $  T 4     
 
         4 
! h  3   3   < 
   
¯
   T

!    
$    
 
i    2   =   
  
 3   

 
 


     
ÿ 
  ?
 3  
   

  
   <  5
 
        3  


  <


  
 5 
 
 


’4
i
vEFHFG·HIPKqHMJE
xy H Esttz

 


*+'/ {-./ 

   !" #!"$ 




S 3 <2      00       !  


5 e 
  
    
3
 A   5 e     
 
 3  g3    
 
 
 
  

   e  4       
´=   5  A
   5
¸  
  
5      
    
4 ¬3
  
 8­
  ¶ 
 ¢ 

—˜†€ ™
© A   …‹
 † 

 
 8 
   5  
   
 5e  !A
  5   
 a + b 4
   


  
         
 5   8 2     <  
a b 
¥ š‹ € ‹€—š Œ  Œ —Œ †š 3          3       

 

 Œ 
  …‹
 
 3
  
    
  


 

0 

š„† — †š—
    ˜†€ ™ †š3 4  
     
  5  4
 
     
  
%

   3    


 
    5  

 8
       
  5
     ! 3
   <    0

5
 
!š„†
  — Œ —€Æ€šŠ ‹—Ž 
 †   
4      
 <
  5 0
    5 e             
%

   9 2 4  
   
54 
  
 
  
   
 
 5    55 
 4 
T3  
3    


 <
   
 
 
$
  
   5     
 2         
3 94   <    
5    
 
   
5  T        5T3  5    T3  
f3
  ¢Ÿ4 ¸ 

   e
3   


  ¶ ©  ƀ†˜€—™—š <
5    3 
&
'' 
( YZ[\]^[_]`ab[ZX^c[d

4   
4    5e  
 
  T     
3    
     3  2
    
  3


  
   

   2  3
 3 3
3

 
 
  4 ´=   
5e  4 
   0
<
 
   
   
      
 3
3 
 
8 ­  

  
<  <  3 

  ¬3

3
3 35
5  3  
©¢Ÿ¸ 

¶ 5   T
 A   T3T0

 A
5

3 


) *+!" #! "*+, !" #!


3
3  3   5          
     ‹ …AƆ0
 e  <
5 e     
ŒŒ—Œ†š   28
  

  T  
   

 

     
    
  

  3 
<
5¶f ©¢Ÿ  ”0”•¸  
   
A   


4r F h         $     T   
KMJn rHH FE CMn RGCI HC3

J
 
     A
  
 
    
 
M  

HH EC     
-

    
  <
 
 


   

   
S   


  3
   

 
 5  
$ 
33      <   ! 3
3 <
 3 
     ¬5 “
g  ‹…Ɔ— Ä š ‹
  5€— ‹† Œ
e  Œ —

Œ †š 

  
4     
  
8   
     e   
   4      S  
 
 
   0
 
A  

     5
44    5! 
®4 <
5    g

 ¶5  ‘<
© ¸

 

2

A    
         
5 3 
       8 
  3
3    
   
TA 3
 3
<   4 
  3
3 5
 
        
 43
3
 
 5

2!  
        
 
 

    
 h   4       3 
25e    
e 
 5 
 e       <
 
 
   5
5 4    
 3

 5   25 
  
4

    
    
            


 

 
   
 

 
3  
 
5    5e  4   2

 9 5  3
^Z[_º [
./01234 56 7

  
 5

2
     
4T

A
 

   4 

    ?   3
  5e
  U
 <5 2
V 4     2 


‘  
 
A   5  e   

  
 
4 0
5  
    g 
 T 8 5      

4  ?
  
  
 


   ! 3

    5
    
        
      3
3
   
 0
3 5  
4     ¬A       
 5 ï 
 
 0 5   
  
  3
 4   
   8
  <    5 e 
   4 0
  <      
     8
   5
g<2  
 


e  
  4
       

 5 <  5e  2 4
 
8 9"!! !*"+!":";<=!"$ 


S  83 <4
     
 
 0
     

    e 8  


  3      
 

  


   
 
  2 
8   
    5 e  3     
 2 
 0
        A
5   5
    5e    

   3   
 T    
 
 44   
  0
 25  3<  
     4 4     

       3
 
¸ A         0
 < 

 ¶©¢U 1
¶¸3œŠƒ…  
š Œ™—  ˜†€ …‹™ †Æ—€
4
‹… „
 
—€
T 
 @;
  
 

 
 


 T 



 
    3 
 
 
      3  <20 0


    9   2 
        3     A
 
3
 

 
¸œŠƒ…šŒ™
¶   —„ —ššŒ4—˜†€…‹™†š @
 ;
  3
 
T  
 
       

T     
<
 T 
3 
  4  


 8  T 6  3 …™…‹š   3 48 
> YZ[\]^[_]`ab[ZX^c[d
A
 3  ï  A 
  T
9T  
    9
 T    5<
e
 e    
   

M   5       

”
4@

  3
  
   T      0
            5
 4  !  

       

3    
 


T   
  



3²‹ …™3
 
†   
        
4 
  
5e A   
3   


               ¬    
 < 34    T  0  
 
     
  
S 

 
25 


3    
g   A
5   A
5
   3  

  
 
  4  
 
<    4     

  
  
  !     
 8  32   
!       485 e 
  U ¶¸ 
     

  <   e       ¸  
   GCIP3
ô
C
 
IE¶ ¸ 
5

    
3 
    
 

    ¶   

   
 2 0  

          
0k ¶©©  ¢¸   3
 < !        4  
 
i2             
   3
 
     
5 e  
  
 A  

   4    A


3A
5       
   
 
 3 2 !     
   
       5 e  
   
 
        0

5 A5 3 
 
g<
   
  
 
4
25
3
   
 
 
 A  
67             1

  Ÿ  ¸
 8
0
2 e  A
  

  ¶ © S  
 5        
  
  
   
 
 
A
5
  5e     

  e3

 5    5
      3
 
   3


 S
8  3 85
      9   
 3   5e  5 e  
    
  

5 
5      A 
4  e T

A
5 …ŒŒ
3


 


‚ŠŽ  † Œ „†™  Æ ‡ —  f 
f (n) 
4 
 




<
5
     0
  A

 3   
        n ¬3
 
  ! ¶ ©¢¢¸  f (n)
¬  
   4

    
   
 0
  A

 <
5 㠪 
 3 …Œ   Œ 
 
Œ ‹   
   n
 
  Æ ‡   —    ™
 Ɔ  3
   ¬
  

f

n 
 f 
 
<
5 „†™ Æ A

‡…Œ—ŒŒšÆ—ކ 
33f (n)
 0

^Z[_º [
./01234 56 ?

 

 

! 8
 <
 <
=A T f 
<
5
  
ò  
 
   A0
A2
 
             9

 5 A


3
   
   3 
  

$ 
    

   
   v [0..n8− 1], n<
5
≥ 1 
   
 A

 
f (n) 9 5e   v v n
<   3   ¬
  
@
f

 ?3
¯ 
3  3²‹…™†
f (n) = n − 1, para n > 0.

ABCDBEF EGHGIJKLMNOPLQRMRLSOTM LP UVNPLWTXPYLZ[XZOL

\]^_]`a bcdef
\ghij^ ^i]kk l cmn
\ghij^ ko]oj^ jpo q cm rjpo stu v jpo wx n
jpo qcmy s tzu f
{|} rjpo ~ yef ~ wf ~€ € xj{ rq cmst~ ux qcmyst~ uf
o q
}a g}p cmf



†€™ —U @

3 
 e
8


n  n ≥ 1 <2  n − 1  5  
‚

€†Ñ—U        5 e 



 en −1
    
   
3

 ?3n − 1  5  
 2   9  e  
S     2
     5  <
 2 

 max  Max 
!   
 A
5  
 3         
          
   
   

A
5   
 3
  
 <
5       
      
  

 3
  3
      
 A
5   
 <
5    
      max 4
3    3  
       

  
 <  
  4 8n $ 
35 
  
U        
      3 
 4 
ƒ„…†‡ˆ†‰Š‹ŒŒ‹…Ž‹‹‘‹…’“”•• ”’˜”™š ›œ“’ •ž”ž’  ¡Š¡¢£‘‹…Ž‹‹‘‹…Ф‹ 
–— –— – –Ÿ
Œ‹†ˆ‡¢‹‡ ¡¥‹‹  …£¦ §Ž†Š‹Œˆ‹¨ ©ª«­
– ¬¬
® YZ[\]^[_]`ab[ZX^c[d
h     3
 =  U  4  
   T
S™  †€„—š† 
n S    A
5
…†€„—š†        
 
   Æ   A
5
%

4  
4      n ¬ f 
<
5   A
 
  
f (n)      
  3 

S „—š†™ Œ…†¶
  ¸  ï   A0
Œ…š‹€…Ä…Ž†  

5  Œ4 n     
ŒÆ€†Ä—Ä……Œ 

¯

— š   8
             

   
  44     4
45 2  n

   
   3 
  <
   T 4 
   
 
4 4   

       òT



  3
    
5         
   
               
 
        

    
2   3  
  
       4     €˜ …š‹€†š


 3 
„ —с 9 
4
2 
  
  
  
      
%

3 
23 
      3 

 
  
    

A   
 
<2
 Ɓš° … S …   
š—š° Š„—   3 A  
8     



 
 
3 
   
 
3  

°

8 f
<
5  A  
 f (n)  93 
¬

 
   9 2 
    
 
     3 S     U
melhor caso : f (n) = 1
pior caso : f (n) = n

 
 33   
    
 S
caso médio : f (n) = (n + 1)/2

S
  
     9     
   
   2n  5e  
 
    
 
 
 
      
  
 

4 4

3  

 
  A    
  
8   

  
 
 ¬ p <   0
 3  
 0 3 i0    

 5e     
 
 i

i i 


 f (n) 4    4 4  
f (n) = 1 × p1 + 2 × p2 + 3 × p3 + · · · + n × pn .
 4
5      p  ¬ 
44   
  
 
3   
  U
i

p = 1/n, 0 ≤ i < n 
i
 
1 1 n(n + 1) n+1
f (n) = (1 + 2 + 3 + · · · + n) = = ·
n n 2 2
./01234 ^Z[_º [
56 ±

!    


 
 
 
5 



  
 


 A A     3    

 ’ 

 4  
  
 
 4 
      v [0..n−1], n ≥ 1 g  3  
3  3    
  <
  
3    V S  
maxMin   
   
2      5e •   
v   ¬8f
<
5 A 
f (n) 
maxMin1  
9  5e   v v n  ?3
     
f (n) = 2(n − 1), para n > 0,

ABCDBEF EGH²³P QJTP TZOR´µLWNMTORQRMRLSOTMLP UVNPLTLP¶ZNPL


\]^_]`a bcdef
\ghij^ ^i]kk l cml ~we n
\g ^ k ] ^ po tu q
h ij o o j j cml ~we rjpo stu v jpo wx n
jpo q cmy s tz u v q ~w y zuf
st
{|} rjpo ~ yef ~ wf ~€ € xn
j{ rst~u ·q x q
cm cmy st~ uf
j{ rst~u q ~wx q ~wyst~ uf

jpo q cml ~wtu yp a¸jpot¹uf
q cm l ~
w tzu y cmf q
q cml ~wteu yq ~wf
}aog}pq cml ~wf



S 3V  < i   4


 

 0

5  v [i]<< min    
  


 

 
   
 5
‘
g    3
  5      U
v [i] > max
     3   
melhor caso : f (n) = n − 1
pior caso : f (n) = 2(n − 1)

 
       
caso médio : f (n) = 3n/2 − 3/2

S 
 
   
 
 
 
 
 v     S
    
 v [i]  
max v 2 ?3 
n−1 3n 3
f (n) = n − 1 + = − , para n > 0.
2 2 2
º YZ[\]^[_]`ab[ZX^c[d
A BCDBEF EGH»³P QJTPTZOR´µLP TJ¼LMRWRQRMRLSOTMLPUVNPLTLP¶ZNPL
\]^_]`a bcdef
\ghij^ ^i]kk l cml ~w¹ n
\ghij^ ko]oj^ jpo tu q cml ~w¹ rjpo stu v jpo wx n
jpo q cmystzu v q ~wystzuf
{|} rjpo ~ yef ~ wf ~€ €xn
j{ rst~u ·q cmx q cmyst~ uf
aika j{ rst~u q ~wx q ~wyst~ u f

jpo q cml ~wtu yp a¸jpot¹uf
q cml ~wtzu yq cmf q cml ~wteu yq ~wf
}aog}pq cml ~wf



  
4
3 9  5e   2 
4 A
;    4
          !    
  3
3U
¸   
   v    0 
  
48



4 
 
8
  
 5    
   

3
 

 e  <    ’


 dn/2e  5  
V¸ SA4
48

   
½



dn/2e − 1  5e 
‘¸ ST4
48
e
   


 dn/2e − 1  5  

e e e ···  Contém o máximo
e


e e e ··· e  Contém o mínimo

¾¿DÀBEGGÁRMON´µLWT TPWLNÂÂXSYLZ
[XZOLÂ
H v Ã

!” 53   0


3  
ÄÅÆ¢ˆ©ª ¤ ‹Œ‹ Œ  Æ¢ˆ©ª žšžÈÉ …  Ê  ‘ ‘ ‹ Ë¢‹Ë¢ ‘–  ˆ£ª
d e Ç Š ‹¡ x Ç ¢¡ˆ ¡ dxe
Š‘‘ …ŽˆŒ ‹¡  ˆ‘ †ˆ£ †‘¡‹†‘¢†‡¢‹ ‹x ¬ ̋¡  …¡‹Æ‘¡ ‹– ‹Æ¢ˆ©ªb c Ç Š¤‹¡‹Œ‹Œ 
Æ¢ˆ©ª •ÈÉ Œ ‹†‘ †ˆ£ †‘¡ ˆ‘ ¢†‡¢‹ ‹ x ¬ ¨  e = 2, 71828 . . .  ˆ£ª
— bxc Š‘‘ …Žˆ   ‹¡
dee = 3 – bec = 2 – d−ee = −2 – b−ec = −3 ¬
Nivio Ziviani
Nivio Ziviani
Outras Obras
Ph.D. em Ciência da Computação, Univer-
Projeto de
sity of Waterloo, 1982. Professor Emérito
da UFMG, Professor Titular do Departa-
mento de Ciência da Computação da Algoritmos Projeto de Algoritmos e Lógica de Programação
Marco Antonio Furlan de Souza,
Marcelo Marques Gomes,
Marcio Vieira Soares e

Algoritmos
UFMG, onde coordena o Laboratório para
Tratamento da Informação (LATIN). Co- Ricardo Concilio
com implementações em Java e C++
fundador de duas empresas especializadas Compiladores: Princípios e Práticas
em tecnologia de busca na Web, a Miner Kenneth C. Louden
Technology Group, vendida para o UOL / Algoritmos e estruturas de dados formam o núcleo da ciência da computação, sendo os componentes
Grupo Folha de São Paulo em 1999, e a básicos de qualquer software. Aprender como programar computadores está intimamente ligado a Estrutura de Dados e
Akwan Information Technologies, algoritmos, já que programas são formulações concretas de algoritmos. Aprendê-los é crucial para
qualquer pessoa que deseja desenvolver softwares de qualidade.
com implementações em Java e C++ Algoritmos em C++
vendida para a Google Inc. em 2005. Autor Adam Drozdek
de três livros na área de algoritmos e co- Esta obra apresenta os principais algoritmos e estruturas de dados conhecidos. As técnicas de projeto Introdução à Ciência da Computação
autor de mais de cem artigos técnicos nas de algoritmos são ensinadas de forma simples, seguindo o paradigma de orientação a objetos, por
Ricardo Daniel Fedeli,
áreas de algoritmos, recuperação de infor- meio de refinamentos sucessivos até o nível de uma implementação na linguagem Java, e todo
programa Java tem um programa C++ correspondente nos apêndices. Enrico Giulio Franco Polloni e
mação, compressão de textos e áreas corre- Fernando Eduardo Peres

Projeto de Algoritmos
latas. Co-criador da conferência SPIRE Destaques:
Introdução aos Fundamentos da
(String Processing and Information § O livro cobre estruturas de dados básicas, contendo listas lineares, pilhas e filas; algoritmos de

com implementações em Java e C++


Retrieval) e Coordenador Geral da confe- ordenação e de pesquisa em memórias primária e secundária; algoritmos em grafos e processamento Computação
rência ACM SIGIR 2005, a mais importan- de cadeias de caracteres; técnicas de análise de algoritmos; paradigmas de projeto de algoritmos; e Newton José Vieira
te do mundo na área de recuperação de in- estudo da complexidade computacional de algoritmos. Modelos Clássicos de Computação
formação. Membro da ACM (Association § Ênfase em tipos abstratos de dados, programação modular, programação orientada a objetos, Flávio Soares Corrêa da Silva e
for Computing Machinery), EATCS encapsulamento e independência de implementação de tipos abstratos de dados com reaproveita- Ana Cristina Vieira de Melo
(European Association for Theoretical mento de código.
Projeto de Algoritmos: Com
Computer Science), IEEE Computer § Informação sobre o comportamento teórico e prático dos algoritmos, fornecendo uma base de Implementações em Pascal e C –
Society e SBC (Sociedade Brasileira de comparação entre os algoritmos. a
Computação). 2 Edição Revista e Ampliada
§ Mais de 156 exercícios propostos dos quais 58 com soluções; 195 programas em Java e 195 Nivio Ziviani
programas em C++; 164 figuras ilustrativas.
Fabiano Cupertino Botelho § Material de apoio para professores na forma de transparências e os códigos em Java e C++
podem ser obtidos no site www.dcc.ufmg.br/algoritmos-java.
Mestre em Ciência da Computação,
Universidade Federal de Minas Gerais,
2004. Aplicações
Atualmente é aluno de doutorado do De- Livro-texto para cursos de Ciência da Computação, Matemática Computacional, Sistemas de Infor-
partamento de Ciência da Computação da mação, Engenharias de Computação, de Controle e Automação, Elétrica, Eletrônica e Mecânica,
Universidade Federal de Minas Gerais, entre outros. Pelo fato de apresentar muitas implementações de algoritmos práticos, o texto é igual-
onde trabalha com funções hash perfeitas mente útil para profissionais engajados no desenvolvimento de software nas linguagens Java e C++.
mínimas para representar eficientemente
um dicionário. Desenvolvedor e mantene-
dor de uma biblioteca de software livre
intitulada CMPH, que contém todos os
algoritmos desenvolvidos durante o seu
doutorado. Especialista em desenvolvi-

Nivio Ziviani
mento de software orientado a objetos nas
linguagens Java e C++.

Para suas soluções de curso e aprendizado,


Consultoria em Java e C++ de
visite www.cengage.com.br Fabiano Cupertino Botelho

Você também pode gostar