Apresentação de conceitos avançados que levem o aluno a uma maturidade em programação estruturada, com conhecimento de uma linguagem de programação com recursos avançados. Aprendizado de técnicas para construção de algoritmos e para análise da complexidade de algoritmos. Aprendizado de algoritmos clássicos de ordenação e busca em memória interna. Prática de Programação.
Análise de algoritmos: conceitos básicos, critérios de complexidade de tempo e espaço.notação assintótica, análise de pior caso, melhor caso e caso médio, técnicas de contagem de operações e análise de recorrências. prática e discussão com problemas computacionais relevantes. Algoritrnos de ordenação interna simples e avançados: conceitos básicos, métodos de ordenação bubblesort. quicksort, inserção, shellsort, seleção, heapsort, mergesort. contagem de menores, contagem de tipos e radixsort, análise dos algoritmos de ordenação, prática e discussão com problemas computacionais relevantes. Algoritmos de busca interna: conceitos básicos,métodos de busca seqüencial, seqüencial indexada, binária e por interpolação, análise dos algoritmos de busca anteriores e considerações sobre busca em árvores, prática e discussão com problemas computacionais relevantes. Hashing interno: conceitos básicos. tipos de.hashing, funções hash, tratamento de colisões, análise dos algoritmos de busca. inserção e remoção com base em hashing. Paradigmas de projeto de algoritmos: conceitos básicos, paradigmas de indução, recursividade. tentativa e erro, divisão e conquista, programação dinâmica, algoritmos gulosos e algoritmos aproximados, prática e discussão com problemas computacionais relevantes.
Introdução de conceitos avançados em linguagem de programação estruturada. Análise de algoritmos: critérios de complexidade. Notação Assintótica. Análise do pior caso, melhor caso e caso médio. Paradigmas de Projeto de algoritmos (indução, recursividade, divisão e conquista, etc.). AIgoritmos de ordenação (por inserção, seleção, partição) diretos e avançados, e de busca (direta, seqüencial, indexada) em memória interna. Espalhamento (hashing).
Livro Texto:CORMEN, T.H. et al.: AIgoritmos: Teoria e Prática. Elsevier e Campus (tradução). ISBN 853520926-3.CORMEN, T.H.; LEISERSON, C.E.; RIVEST, R.L.; STEIN, C. Algoritmos: Teoria e Prática. Editora Campus.2002.WIRTH,N. Algorithrns + Data Structures = Programs, Prentice-Hall, 1986.KELLEY, A.; POHL, L - A Book on C, 2a. edição, The BenjanminJCummings Pub. Co., lnc. 1990.ZIVIANI, N. Projeto de Algoritmos, 2a. edição, Thornson, 2004 .Bibliografia Complementar:GRIES,D. The Science of Programming. Berlin. Springer, 1981.KERNIGHAM,B.: RLTCHlE,D. The C Programming Language, Prentice-Hall, 1988.SZWARCFTTER, J. L.; MARKENZON, L. Estruturas de Dados e seus Algoritmos, Livros Técnicos e Científicos, 1994.HOROWLTZ E.. SAHNI, S. - Fundamentos de Estrutura de Dados. Rio de Janeiro, Editora Campus, 1986.