Você está na página 1de 226

Algoritmos e

Estrutura de dados
Rodrigo Adur
rodrigoadurti@gmail.com
Apresentao

 Professor Rodrigo Adur

 Formao
 Bacharelado em Sistemas de Informaes (FILC)
 Especialista em Sistemas de Informaes (NCE/UFRJ)

 Experincia Profissional
 Desenvolvimento de Sistemas
 Desenvolvimento de biblioteca de componentes
 Desenvolvimento de framework
 Analista de Sistemas do SERPRO
 Arquiteto
 Lder tcnico
 Programador

Algoritmos e Estruturas de dados Rodrigo Adur


Estrutura do Mdulo

 Mdulo I
 Conceitos Bsicos
 Complexidade de Algoritmos
 Arrays
 Recursividade
 Pesquisas em Vetores
 Busca Sequencial
 Busca Binria
 Algoritmos de Ordenao
 Bubble Sort
 Selection Sort
 Insertion Sort (Insero Direta)
 Heap Sort
 Merge Sort
 Quick Sort

Algoritmos e Estruturas de dados Rodrigo Adur


Bibliografia

Algoritmos Teoria e prtica Estrutura de Dados e seus


Thomas Cormen Algoritmos
3 Edio Jayme Luiz
3 Edio

Algoritmos e Estruturas de dados Rodrigo Adur


Bibliografia

Estrutura de Dados e Algoritmos


em Java
Michael Goodrich
4 Edio

Algoritmos e Estruturas de dados Rodrigo Adur


Conceitos Bsicos
Conceitos Bsicos
 Estrutura de Dados
 Uma estrutura de dados um modo particular de armazenamento
e organizao dos dados que possibilite o uso dos mesmos de
forma eficiente.

 As estruturas de dados diferem umas das outras pela disposio ou


manipulao de seus dados. A disposio dos dados em uma
estrutura obedece a condio preestabelecida e caracteriza a
estrutura.

 Nenhuma estrutura de dados nica funciona bem para todas as


finalidades. Dessa forma, importante conhecer seus pontos
fortes e suas limitaes.

Algoritmos e Estruturas de dados Rodrigo Adur


Conceitos Bsicos
 Algoritmos
 Um algoritmo qualquer procedimento computacional bem
definido que toma algum valor ou conjunto de valores como
entrada e produz algum valor ou conjunto de valores como sada.

 Um algoritmo uma sequencia de etapas computacionais que


transformam a entrada na sada.

ENTRADA PROCESSAMENTO SADA

Algoritmos e Estruturas de dados Rodrigo Adur


Representao de Algoritmos
 Fluxograma
 Trata-se de uma representao esquemtica de um processo ou uma
sequencia de passos, feito atravs de grficos que ilustram de forma
descomplicada a transio de informaes entre os elementos que o
compe.

Terminal - Demarca o inicio e o fim de um algoritmo.

Processo - Um passo (operao) de um algoritmo.

Condio Indica uma situao de deciso.

Fluxo Indica o sentido dos passos de um algoritmo.

Algoritmos e Estruturas de dados Rodrigo Adur


Representao de Algoritmos
 Fluxograma

Algoritmos e Estruturas de dados Rodrigo Adur


Representao de Algoritmos
 Pseudocdigo / Pseudolinguagem
 O pseudocdigo permite que o programador possa se concentrar
na lgica e nas estruturas de controle e no com as regras de uma
linguagem especfica.
 Ao contrrio de uma linguagem de programao no existe um
formalismo rgido de como deve ser escrito o algoritmo. O
algoritmo deve ser fcil de se interpretar e fcil de codificar, porm,
sem ambiguidades.

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 01
[2011 - CESPE - EBC - Analista]
Acerca de pseudocdigo, descrio narrativa e fluxograma, que so usados para a
descrio de algoritmos, julgue os prximos itens.

Para especificar os passos de um algoritmo, o pseudocdigo utiliza uma linguagem


natural com caracterstica pouco formal, o que pode causar ambiguidade e
propiciar interpretaes errneas.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 01
[2011 - CESPE - EBC - Analista]
Acerca de pseudocdigo, descrio narrativa e fluxograma, que so usados para a
descrio de algoritmos, julgue os prximos itens.

Para especificar os passos de um algoritmo, o pseudocdigo utiliza uma linguagem


natural com caracterstica pouco formal, o que pode causar ambiguidade e
propiciar interpretaes errneas.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Conceitos Bsicos
 TAD Tipo Abstrato de Dados
 A abstrao enfatiza apenas as caractersticas essenciais de um
objeto, levando em considerao um cenrio especfico. O
conjunto de caractersticas resultante da abstrao materializado
na forma de um TAD Tipo Abstrato de Dados.

 Um tipo abstrato de dados agrupa a


estrutura de dados juntamente com as
operaes que podem ser feitas sobre
esses dados.

Algoritmos e Estruturas de dados Rodrigo Adur


Conceitos Bsicos
 TAD Tipo Abstrato de Dados
 O TAD encapsula a estrutura de dados de forma que os usurios s
tenham acesso a algumas operaes disponibilizadas sobre esses
dados.

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 02
[2010 - CESPE - TRT - 21 Regio (RN) - Tecnologia da Informao]
Julgue os itens seguintes, referentes s estruturas de dados.

O tipo abstrato de dados consiste em um modelo matemtico (v,o), em que v um


conjunto de valores e o um conjunto de operaes que podem ser realizadas
sobre valores.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 02
2010 - CESPE - TRT - 21 Regio (RN) - Tecnologia da Informao]
Julgue os itens seguintes, referentes s estruturas de dados.

O tipo abstrato de dados consiste em um modelo matemtico (v,o), em que v um


conjunto de valores e o um conjunto de operaes que podem ser realizadas
sobre valores.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 03
[2009 - FCC - TRE-PI - Programao de Sistemas]
Em relao a tipos abstratos de dados, correto afirmar que:
(A) O TAD no encapsula a estrutura de dados para permitir que os usurios
possam ter acesso a todas as operaes disponibilizadas sobre esses dados.
(B) Algumas pilhas admitem serem declaradas como tipos abstratos de dados.
(C) Filas no permitem declarao como tipos abstratos de dados.
(D) Os tipos abstratos de dados podem ser formados pela unio de tipos de dados
primitivos, mas no por outros tipos abstratos de dados.
(E) So tipos de dados que escondem a sua implementao de quem o manipula;
de maneira geral as operaes sobre estes dados so executadas sem que se saiba
como isso feito.

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 03
[2009 - FCC - TRE-PI - Programao de Sistemas]
Em relao a tipos abstratos de dados, correto afirmar que:
(A) O TAD no encapsula a estrutura de dados para permitir que os usurios
possam ter acesso a todas as operaes disponibilizadas sobre esses dados.
(B) Algumas pilhas admitem serem declaradas como tipos abstratos de dados.
(C) Filas no permitem declarao como tipos abstratos de dados.
(D) Os tipos abstratos de dados podem ser formados pela unio de tipos de dados
primitivos, mas no por outros tipos abstratos de dados.
(E) So tipos de dados que escondem a sua implementao de quem o manipula;
de maneira geral as operaes sobre estes dados so executadas sem que se saiba
como isso feito.

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 04
[2010 - CESPE - Banco da Amaznia - Tecnologia da Informao]
Em relao classificao de dados e tipos abstratos de dados (TADs), julgue os
itens subsequentes.

A escolha de estruturas internas de dados utilizados por um programa pode ser


organizada a partir de TADs que definem classes de objetos com caractersticas
distintas.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 04
[2010 - CESPE - Banco da Amaznia - Tecnologia da Informao]
Em relao classificao de dados e tipos abstratos de dados (TADs), julgue os
itens subsequentes.

A escolha de estruturas internas de dados utilizados por um programa pode ser


organizada a partir de TADs que definem classes de objetos com caractersticas
distintas.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Gabarito

01 Errado 03 E
02 Certo 04 Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de
Algoritmos
Complexidade de algoritmos
 Principais caractersticas
 Para ser capaz de classificar um algoritmo como sendo bom,
so necessrias formas de analisar o mesmo. Analisar um
algoritmo significa prever os recursos de que o algoritmo
necessita.

 Em geral, pela anlise de vrios


algoritmos candidatos para um
problema, pode-se identificar o mais
eficiente.

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Principais caractersticas
 O tempo de execuo de um algoritmo pode ser determinado
por:
 Mtodos empricos - obter o tempo de execuo atravs da
execuo propriamente dita do algoritmo, considerando-se
entradas diversas.
 Mtodos analticos - O objetivo dos mtodos analticos
determinar uma expresso matemtica que traduza o
comportamento de tempo de um algoritmo. Esse mtodo
visa aferir o tempo de execuo de forma independente
das condies locais de processamento.

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Notao Assinttica
 Quando observamos tamanhos de entradas suficientemente
grandes para tornar relevante apenas a ordem de crescimento do
tempo de execuo de um algoritmo, estamos estudando a
eficincia assinttica.

 Em geral, um algoritmo que assintoticamente mais eficiente


ser a melhor escolha para todas as entradas, exceto as muito
pequenas.

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Notao Assinttica
 A eficincia assinttica observa apenas as entradas grandes o
suficiente para tornar relevante apenas a ordem de crescimento
do tempo de execuo.
 No sero consideradas constantes aditivas ou multiplicativas na
expresso matemtica obtida.
 Depois de simplificar a expresso, ficaremos apenas com a parte
da funo de maior complexidade.
 Por exemplo:
 Um valor de nmero de passos igual a 3n ser
aproximado para n.
 Um valor de nmero de passos igual n2 + 2 ser
aproximado para n2.

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Notao O (micron)
 A notao O (Big O Notation) til para descrever limites
superiores de complexidade.
 Definio: Sejam f e g funes positivas. Diz-se que f esta na
ordem O de g, escrevendo-se f = O(g), quando existir uma
constante c > 0 e um valor n suficientemente grande, tal que:
f(n) c.g(n)
g >= f
 A funo g atua como um limite
superior para valores assintticos.
n2
 Exemplo: 1
 5n2 + 3nlogn + 2 O(n2)
1
 5n2 + 3nlogn + 2 O(n3)
n2
Algoritmos e Estruturas de dados Rodrigo Adur
Complexidade de algoritmos
 Notao (theta)
 A notao til para exprimir limites superiores justos.
 Definio: Sejam f e g funes positivas. Diz-se que f (g),
escrevendo-se f = (g), quando ambas as condies f = O(g) e g =
O(f) forem verificadas. A notao exprime o fato de que duas
funes possuem a mesma ordem de grandeza assinttica.

 A notao permite dizer que duas funes crescem mesma


taxa, at fatores constantes.
g=f
n3
 Exemplo: 1
 5n3 + 3n2 + 2000 (n3)

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Notao (mega)
 A notao , descrita a seguir, til para descrever limites
inferiores assintticos.
 Definio: Sejam f e g funes positivas. Diz-se que f (g),
escrevendo-se f = (g) quando existir uma constante c > 0 e um
valor n suficientemente grande, tal que:
f(n) c.g(n). f >= g
 A notao fornece uma maneira
assinttica de dizer que uma funo
cresce a uma taxa que maior ou
igual a de uma outra funo.
nlogn
 Exemplo: 1
 3nlogn + 2 (n3)

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Notao Assinttica
 A complexidade de tempo de pior caso corresponde ao nmero
de passos que o algoritmo efetua no seu pior caso de execuo,
isto , para a entrada mais desfavorvel. A complexidade de pior
caso fornece um limite superior para o nmero de passos que o
algoritmo pode efetuar, em qualquer caso.

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Funes mais usadas na anlise de algoritmos
 Para saber a complexidade de um algoritmo, divide-se o mesmo
em classes de problemas, de acordo com o parmetro que afeta o
algoritmo de forma mais significativa.

Aumento da complexidade
(+)

()
Diminuio da complexidade

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Funes mais usadas na anlise de algoritmos
 A funo constante
Caracteriza algoritmos de complexidade 1, independentemente
do tamanho n de entradas. o nico caso onde as instrues dos
algoritmos so executadas num tamanho fixo de vezes.

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Funes mais usadas na anlise de algoritmos
 A funo logaritmo
Caracteriza algoritmos de complexidade logn. Ocorre
tipicamente em algoritmos que dividem problemas em
problemas menores.

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Funes mais usadas na anlise de algoritmos
 A funo linear
Caracteriza algoritmos de complexidade n. Uma operao bsica
executada em cada elemento de entrada do algoritmo.

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Funes mais usadas na anlise de algoritmos
 A funo nLogn
So algoritmos de complexidade nLogn. Ocorre tipicamente em
algoritmos que dividem problemas em problemas menores,
porm juntando posteriormente a soluo dos problemas
menores.

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Funes mais usadas na anlise de algoritmos
 A funo quadrtica
So os algoritmos de complexidade n2. Nesses algoritmos, os
itens so processados aos pares, com laos aninhados.

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Funes mais usadas na anlise de algoritmos
 A funo cbica
So algoritmos de complexidade n3. Nesses algoritmos, os Itens
so processados trs a trs, com trs laos aninhados.

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Funes mais usadas na anlise de algoritmos
 A funo exponencial
So algoritmos de complexidade an. Por se tratar de algoritmos
muito custosos, possuem pouca aplicao prtica.

Algoritmos e Estruturas de dados Rodrigo Adur


Complexidade de algoritmos
 Funes mais usadas na anlise de algoritmos

Grfico comparativo entre as complexidades. Consideramos um algoritmo


mais eficiente que outro se o tempo de execuo do seu pior caso apresenta
uma ordem de crescimento mais baixa. Quanto mais complexo, menos
eficiente.
Algoritmos e Estruturas de dados Rodrigo Adur
Questo 05
[2009 - CESGRANRIO - BNDES - Anlise de Sistemas - Desenvolvimento]
Seja n o tamanho da entrada de um algoritmo para um problema P. Cada
alternativa, que corresponde a um algoritmo distinto, apresenta o nmero de
operaes necessrias para resolver P. Considerando-se a anlise assinttica (Big O
notation), qual algoritmo possui menor complexidade?

(A) 2 + 10logn
(B) 3n2 + n
(C) 1000 + 2n3
(D) 5n + 128
(E) 4n

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 05
[2009 - CESGRANRIO - BNDES - Anlise de Sistemas - Desenvolvimento]
Seja n o tamanho da entrada de um algoritmo para um problema P. Cada
alternativa, que corresponde a um algoritmo distinto, apresenta o nmero de
operaes necessrias para resolver P. Considerando-se a anlise assinttica (Big O
notation), qual algoritmo possui menor complexidade?

(A) 2 + 10logn logn


(B) 3n2 + n n2
(C) 1000 + 2n3 n3
(D) 5n + 128 n
(E) 4n 4n

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 06
[2011 - FCC - TRT - 19 Regio (AL) - Tecnologia da Informao]
Considere os seguintes algoritmos e suas complexidades na notao Big O:

- Algoritmo A: O(log n)
- Algoritmo B: O(n2)
- Algoritmo C: O(n . log n)

Considerando-se o pior caso de execuo destes algoritmos, correto afirmar que


o algoritmo:
(A) A o menos eficiente.
(B) C o menos eficiente.
(C) A no o mais eficiente nem o menos eficiente.
(D) B o menos eficiente.
(E) C o mais eficiente.

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 06
[2011 - FCC - TRT - 19 Regio (AL) - Tecnologia da Informao]
Considere os seguintes algoritmos e suas complexidades na notao Big O:

- Algoritmo A: O(log n) Mais eficiente


- Algoritmo B: O(n2) Menos eficiente
- Algoritmo C: O(n . log n)

Considerando-se o pior caso de execuo destes algoritmos, correto afirmar que


o algoritmo:
(A) A o menos eficiente.
(B) C o menos eficiente.
(C) A no o mais eficiente nem o menos eficiente.
(D) B o menos eficiente.
(E) C o mais eficiente.

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 07
[2009 - CESGRANRIO - Casa da Moeda - Desenvolvimento de Sistemas]
No desenvolvimento de um sistema de anlise financeira, um programador utilizou
um algoritmo cuja complexidade de tempo, no pior caso, igual a O(n).
Outro programador aponta um algoritmo de melhor complexidade igual a

(A) O(log n).


(B) O(n log n).
(C) O(n2)
(D) O(2n)
(E) O(n!)

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 07
[2009 - CESGRANRIO - Casa da Moeda - Desenvolvimento de Sistemas]
No desenvolvimento de um sistema de anlise financeira, um programador utilizou
um algoritmo cuja complexidade de tempo, no pior caso, igual a O(n).
Outro programador aponta um algoritmo de melhor complexidade igual a

(A) O(log n).


(B) O(n log n).
(C) O(n2)
(D) O(2n)
(E) O(n!)

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 08
[2008 - CESGRANRIO - BNDES - Anlise de Sistemas - Desenvolvimento]
Observe o algoritmo em JAVA.

A complexidade de tempo desse algoritmo,


no pior caso, em que n corresponde ao
nmero de elementos do vetor v, :
(A) (n).
(B) O (n log n).
(C) O (n2).
(D) (n log n).
(E) (n2 log n).

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 08
[2008 - CESGRANRIO - BNDES - Anlise de Sistemas - Desenvolvimento]
Observe o algoritmo em JAVA.

n n2
n

A complexidade de tempo desse algoritmo,


no pior caso, em que n corresponde ao
nmero de elementos do vetor v, :
(A) (n).
(B) O (n log n).
(C) O (n2).
(D) (n log n).
(E) (n2 log n).

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 09
[2008 - CESGRANRIO - BNDES - Anlise de Sistemas - Desenvolvimento]
Se a complexidade de tempo de um algoritmo da ordem de (n log n), correto
afirmar que esse algoritmo tambm
(A) (n).
(B) (n2).
(C) (n log n).
(D) O (log n).
(E) O (n).

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 09
[2008 - CESGRANRIO - BNDES - Anlise de Sistemas - Desenvolvimento]
Se a complexidade de tempo de um algoritmo da ordem de (n log n), correto
afirmar que esse algoritmo tambm
(A) (n).
(B) (n2).
(C) (n log n).
(D) O (log n). f = O(g)  f(n) g(n)
(E) O (n).
f = (g)  f = O(g) e g = O(f)

f = (g)  f(n) g(n)

Algoritmos e Estruturas de dados Rodrigo Adur


Gabarito

05 A 08 C
06 D 09 C
07 A

Algoritmos e Estruturas de dados Rodrigo Adur


Arrays
Arrays
 Principais caractersticas
 Um array uma estrutura de dados que armazena um conjunto
de elementos de forma que os mesmos so acessados por um
ndice.
 Os arrays podem ser unidimensionais (vetores) ou
multidimensionais (matrizes).

 Os arrays so agregados homogneos, ou seja, todos os seus


elementos so de um mesmo tipo.

ndices

Algoritmos e Estruturas de dados Rodrigo Adur


Arrays
 Principais caractersticas
 Os vetores possuem tamanho fixo e suas posies so contguas
na memria.

 O ndice inicial de um vetor zero. Dessa forma, ao se realizar


uma varredura em um array, sempre devemos considerar o
intervalo de 0 ao tamanho do vetor - 1;

Tamanho: 10

ndices

Algoritmos e Estruturas de dados Rodrigo Adur


Arrays
 Manipulando vetores

 Definindo vetores:

 Acessando elementos em vetores:

Algoritmos e Estruturas de dados Rodrigo Adur


Arrays
 Manipulando vetores

 Percorrendo todos os elementos de um vetor

Algoritmos e Estruturas de dados Rodrigo Adur


Arrays
 Manipulando matrizes

 Definindo matrizes em java:

Algoritmos e Estruturas de dados Rodrigo Adur


Arrays
 Manipulando matrizes
inteiros[1][1]

inteiros[2][3]

 Acessando elementos em matrizes:

Algoritmos e Estruturas de dados Rodrigo Adur


Arrays
 Manipulando matrizes

 Percorrendo todos os elementos de uma matriz

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 10
[2009 - CESPE - ANAC - Tecnologia da Informao]
Um array um agregado, possivelmente heterogneo, de elementos de dados.
Nele, um elemento individual identificado por sua posio em relao ao
primeiro.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 10
[2009 - CESPE - ANAC - Tecnologia da Informao]
Um array um agregado, possivelmente heterogneo, de elementos de dados.
Nele, um elemento individual identificado por sua posio em relao ao
primeiro.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 11
[2011 - CESPE EBC - Analista]
Acerca das estruturas de dados estticas e homogneas (vetores e matrizes) e das
estruturas de dados dinmicas (listas, pilhas, filas), utilizadas para armazenar
conjuntos de valores, julgue os itens a seguir.

Vetores so utilizados quando estruturas indexadas necessitam de mais que um


ndice para identificar um de seus elementos.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 11
[2011 - CESPE EBC - Analista]
Acerca das estruturas de dados estticas e homogneas (vetores e matrizes) e das
estruturas de dados dinmicas (listas, pilhas, filas), utilizadas para armazenar
conjuntos de valores, julgue os itens a seguir.

Vetores so utilizados quando estruturas indexadas necessitam de mais que um


ndice para identificar um de seus elementos.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 12
[2010 - CESPE - TRE-BA - Anlise de Sistemas]
Acerca de estruturas de dados do tipo vetor em linguagens estruturadas, julgue os
itens a seguir.

Vetores podem ser considerados como listas de informaes armazenadas em


posio contgua na memria.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 12
[2010 - CESPE - TRE-BA - Anlise de Sistemas]
Acerca de estruturas de dados do tipo vetor em linguagens estruturadas, julgue os
itens a seguir.

Vetores podem ser considerados como listas de informaes armazenadas em


posio contgua na memria.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 13
[2010 - FCC - TRT - 9 REGIO (PR) - Analista Tecnologia da Informao]
uma estrutura de dados dividida em linhas e colunas. Desta forma, pode-se
armazenar diversos valores dentro dela. Para obter um valor necessrio
identific-lo por meio do nmero da linha e da coluna onde est armazenado.
Trata-se de
(A) rvore.
(B) matriz.
(C) pilha.
(D) fita.
(E) deque.

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 13
[2010 - FCC - TRT - 9 REGIO (PR) - Analista Tecnologia da Informao]
uma estrutura de dados dividida em linhas e colunas. Desta forma, pode-se
armazenar diversos valores dentro dela. Para obter um valor necessrio
identific-lo por meio do nmero da linha e da coluna onde est armazenado.
Trata-se de
(A) rvore.
(B) matriz.
(C) pilha.
(D) fita.
(E) deque.

Algoritmos e Estruturas de dados Rodrigo Adur


Gabarito

10 Errado
11 Errado
12 Certo
13 - B

Algoritmos e Estruturas de dados Rodrigo Adur


Recursividade
Recursividade
 Principais caractersticas
 Um mtodo recursivo aquele que possui uma ou mais
chamadas para si mesmo.
 Todo mtodo recursivo pode ser implementado de forma no
recursiva, tal que execute exatamente a mesma computao.
 Frequentemente, os procedimentos recursivos so mais concisos
do que um no recursivo correspondente.
 Todo mtodo recursivo deve possuir um ou mais casos recursivos
e pelo menos um caso base.

Algoritmos e Estruturas de dados Rodrigo Adur


Recursividade
 Principais caractersticas
 Um algoritmo no recursivo equivalente a um recursivo pode ser
mais eficiente.
 A depurao de mtodos recursivos pode ser mais complexa.
 Durante o processamento do mtodo recursivo, os dados vo
para uma rea da memria chamada stack (pilha).

Algoritmos e Estruturas de dados Rodrigo Adur


Recursividade
 Exemplo de recurso
 O fatorial de um inteiro positivo n definido como sendo o
produto dos inteiros de n at 1.
 Por conveno, o fatorial de 0 1 e o fatorial de 1 1.
 De maneira formal, para n>1 temos: n! = n x (n-1) x (n-2) ... x 2 x 1

 Implementao do fatorial de forma recursiva:

Algoritmos e Estruturas de dados Rodrigo Adur


Recursividade

120
fatorialRecursivo( 5 )
[1] 120
[2] Stack Memory
5 * fatorialRecursivo( 4 ) [1] [2] [3] [4] [5]
24
[3]
4 * fatorialRecursivo( 3 )
[4] 6
3 * fatorialRecursivo( 2)
[5] 2
2 * fatorialRecursivo( 1 )
1
Algoritmos e Estruturas de dados Rodrigo Adur
Recursividade
 Implementao do fatorial de forma no recursiva

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 14
[2009- FCC - TJ Programao de Sistemas]
A recursividade na programao de computadores envolve a definio de uma
funo que:

(A) apresenta outra funo como resultado.


(B) aponta para um objeto.
(C) aponta para uma varivel.
(D) chama uma outra funo.
(E) pode chamar a si mesma.

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 14
[2009- FCC - TJ Programao de Sistemas]
A recursividade na programao de computadores envolve a definio de uma
funo que:

(A) apresenta outra funo como resultado.


(B) aponta para um objeto.
(C) aponta para uma varivel.
(D) chama uma outra funo.
(E) pode chamar a si mesma.

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 15
[2010 - CESPE - Banco da Amaznia - Tecnologia da Informao]

Considere o algoritmo acima, em que M[ ] seja um vetor de valores inteiros e A e B


sejam dois valores inteiros e o primeiro elemento do vetor M esteja localizado na
posio 1, sendo os argumentos passados por referncia. Com base nessas
informaes, julgue os itens a seguir.

possvel implementar uma funo que gere o mesmo resultado, utilizando a


mesma lista de parmetros e substituindo o uso de recursividade por uma
estrutura de repetio do tipo para.
Certo Errado
Algoritmos e Estruturas de dados Rodrigo Adur
Questo 15
[2010 - CESPE - Banco da Amaznia - Tecnologia da Informao]

Considere o algoritmo acima, em que M[ ] seja um vetor de valores inteiros e A e B


sejam dois valores inteiros e o primeiro elemento do vetor M esteja localizado na
posio 1, sendo os argumentos passados por referncia. Com base nessas
informaes, julgue os itens a seguir.

possvel implementar uma funo que gere o mesmo resultado, utilizando a


mesma lista de parmetros e substituindo o uso de recursividade por uma
estrutura de repetio do tipo para.
Certo Errado
Algoritmos e Estruturas de dados Rodrigo Adur
Questo 16
[2010 - CESPE - Banco da Amaznia - Tecnologia da Informao]

Considere o algoritmo acima, em que M[ ] seja um vetor de valores inteiros e A e B


sejam dois valores inteiros e o primeiro elemento do vetor M esteja localizado na
posio 1, sendo os argumentos passados por referncia. Com base nessas
informaes, julgue os itens a seguir.

Se X for um vetor com os elementos [1, 2, 4, 8, 16, 32, 64, 128], a chamada da
funo func(X,2,6) retornar o valor 62.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 16
Informaes importantes
 Primeiro elemento na posio 1.
 X = [1, 2, 4, 8, 16, 32, 64, 128]
 func(X,2,6) retornar o valor 62?

func( X, 2, 6 )
62
2 + func( X, 3, 6 )
60
4 + func( X, 4, 6 )
56
8 + func( X, 5, 6 )
48
16 + func( X, 6, 6 )
32

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 16
[2010 - CESPE - Banco da Amaznia - Tecnologia da Informao]

Considere o algoritmo acima, em que M[ ] seja um vetor de valores inteiros e A e B


sejam dois valores inteiros e o primeiro elemento do vetor M esteja localizado na
posio 1, sendo os argumentos passados por referncia. Com base nessas
informaes, julgue os itens a seguir.

Se X for um vetor com os elementos [1, 2, 4, 8, 16, 32, 64, 128], a chamada da
funo func(X,2,6) retornar o valor 62.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Gabarito

14 E
15 Certo
16 Certo

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa em Vetores
Pesquisa Sequencial
 Principais caractersticas
 Mtodo de busca mais simples. Percorre o vetor
sequencialmente, desde o seu primeiro elemento, at que o valor
seja encontrado ou que os elementos do vetor se esgotem.
 A ideia bsica do algoritmo seria folhear, por exemplo, uma lista
telefnica pgina a pgina, at encontrar o nome desejado ou
constatar que o mesmo no existe.
 Algoritmo possui complexidade no pior caso O(n).

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Sequencial
 Implementao

 Como buscar o nmero 40 nesse vetor?

10 5 38 8 2 40 1
0 1 2 3 4 5 6

Comparao 1

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Sequencial
 Implementao

 Como buscar o nmero 40 nesse vetor?

10 5 38 8 2 40 1
0 1 2 3 4 5 6

Comparao 2

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Sequencial
 Implementao

 Como buscar o nmero 40 nesse vetor?

10 5 38 8 2 40 1
0 1 2 3 4 5 6

Comparao 3

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Sequencial
 Implementao

 Como buscar o nmero 40 nesse vetor?

10 5 38 8 2 40 1
0 1 2 3 4 5 6

Comparao 4

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Sequencial
 Implementao

 Como buscar o nmero 40 nesse vetor?

10 5 38 8 2 40 1
0 1 2 3 4 5 6

Comparao 5

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Sequencial
 Implementao

 Como buscar o nmero 40 nesse vetor?

10 5 38 8 2 40 1
0 1 2 3 4 5 6

Comparao 6

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Binria
 Principais caractersticas
 A ideia bsica do algoritmo percorrer o vetor como se folheia,
por exemplo, uma lista telefnica. Abandonando-se as partes do
catlogo onde o nome procurado, com certeza, no ser
encontrado.
 Para a realizao desse tipo de busca, o vetor deve estar
ordenado.
 Esse mtodo exige acesso aleatrio aos elementos do conjunto.
 Algoritmo possui complexidade no pior caso O(logn).
 O pior caso ocorre quando o elemento procurado o ltimo a ser
verificado, ou mesmo no encontrado.

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Binria
 Funcionamento do Algoritmo
 O vetor dividido ao meio.
 verificado se o valor procurado igual ao valor que corresponde
linha de diviso.
 Caso elemento encontrado, fim da busca.
 Caso valor no seja o procurado, verificado se esta acima ou
abaixo da linha de diviso.
 Caso esteja abaixo, a parte superior descartada, caso
contrrio, a parte inferior descartada.
 Isso feito sistematicamente at que o valor seja encontrado ou
at que seja identificado que o valor no esta na lista. A cada
comparao metade dos elementos da lista so descartados.

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Binria
 Implementao iterativa

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Binria

 Como buscar o nmero 40 nesse vetor?

1 2 5 8 10 38 40 indiceEsq = 0
0 1 2 3 4 5 6 indiceDir = 6

indiceMeio (Comparao 1)

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Binria

 Como buscar o nmero 40 nesse vetor?

1 2 5 8 10 38 40 indiceEsq = 0  4
0 1 2 3 4 5 6 indiceDir = 6

indiceMeio (Comparao 2)

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Binria

 Como buscar o nmero 40 nesse vetor?

1 2 5 8 10 38 40 indiceEsq = 0  4  6
0 1 2 3 4 5 6 indiceDir = 6

indiceMeio (Comparao 3)

Algoritmos e Estruturas de dados Rodrigo Adur


Pesquisa Binria
 Implementao recursiva

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 17
[2010 - CESPE - Banco da Amaznia - Tecnologia da Informao]
Acerca de pesquisa de dados e de operaes bsicas sobre estruturas, julgue os
itens que se seguem.

A pesquisa sequencial aplicvel em estruturas no ordenadas.


Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 17
[2010 - CESPE - Banco da Amaznia - Tecnologia da Informao]
Acerca de pesquisa de dados e de operaes bsicas sobre estruturas, julgue os
itens que se seguem.

A pesquisa sequencial aplicvel em estruturas no ordenadas.


Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 18
[CESPE - 2010 - Banco da Amaznia - Tecnologia da Informao]
Acerca de pesquisa de dados e de operaes bsicas sobre estruturas, julgue os
itens que se seguem.

Quando um algoritmo recursivo recebe como parmetro o trecho do vetor no qual


deve ser realizada a pesquisa, ento essa pesquisa do tipo sequencial.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 18
[CESPE - 2010 - Banco da Amaznia - Tecnologia da Informao]
Acerca de pesquisa de dados e de operaes bsicas sobre estruturas, julgue os
itens que se seguem.

Quando um algoritmo recursivo recebe como parmetro o trecho do vetor no qual


deve ser realizada a pesquisa, ento essa pesquisa do tipo sequencial.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 19
[FCC - 2012 - TJ-RJ - Anlise de Sistemas]
O algoritmo conhecido como busca binria um algoritmo de desempenho timo
para encontrar a posio de um item em:
(A) uma rvore B.
(B) uma lista ligada ordenada.
(C) uma rvore de busca binria.
(D) um heap binrio.
(E) um vetor ordenado.

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 19
[FCC - 2012 - TJ-RJ - Anlise de Sistemas]
O algoritmo conhecido como busca binria um algoritmo de desempenho timo
para encontrar a posio de um item em:
(A) uma rvore B.
(B) uma lista ligada ordenada.
(C) uma rvore de busca binria.
(D) um heap binrio.
(E) um vetor ordenado.

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 20
[CESPE - 2012 - Banco da Amaznia - Administrao de Dados]
Acerca de pesquisa de dados e de operaes bsicas sobre estruturas, julgue os
itens que se seguem.

A busca binria realizada em um grupo de dados previamente ordenado.


Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 20
[CESPE - 2012 - Banco da Amaznia - Administrao de Dados]
Acerca de pesquisa de dados e de operaes bsicas sobre estruturas, julgue os
itens que se seguem.

A busca binria realizada em um grupo de dados previamente ordenado.


Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 21
[CESPE - 2010 - Banco da Amaznia - Tecnologia da Informao]
Acerca de pesquisa de dados e de operaes bsicas sobre estruturas, julgue os
itens que se seguem.

Na pesquisa binria, realiza-se a varredura de uma estrutura de dados desde o seu


incio at o final dessa estrutura, ou at que uma informao desejada seja
encontrada.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 21
[CESPE - 2010 - Banco da Amaznia - Tecnologia da Informao]
Acerca de pesquisa de dados e de operaes bsicas sobre estruturas, julgue os
itens que se seguem.

Na pesquisa binria, realiza-se a varredura de uma estrutura de dados desde o seu


incio at o final dessa estrutura, ou at que uma informao desejada seja
encontrada.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 22
[2012 - CESPE - TRE-RJ - Programao de Sistemas]
Julgue os itens a seguir, referentes a estrutura de dados e organizao de arquivos.

Uma das formas mais simples e rpida de busca em uma estrutura de dados
ordenada o mtodo de pesquisa binria, que segue o paradigma de diviso e
conquista. Se o item pesquisado estiver no meio do vetor, a busca termina com
sucesso. Caso contrrio, se o elemento do meio vier antes do elemento buscado,
ento a busca continua na metade posterior e, se vier depois, a busca continua na
metade anterior do vetor.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 22
[2012 - CESPE - TRE-RJ - Programao de Sistemas]
Julgue os itens a seguir, referentes a estrutura de dados e organizao de arquivos.

Uma das formas mais simples e rpida de busca em uma estrutura de dados
ordenada o mtodo de pesquisa binria, que segue o paradigma de diviso e
conquista. Se o item pesquisado estiver no meio do vetor, a busca termina com
sucesso. Caso contrrio, se o elemento do meio vier antes do elemento buscado,
ento a busca continua na metade posterior e, se vier depois, a busca continua na
metade anterior do vetor.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 23
[CESGRANRIO - 2011 - FINEP - Analista - Desenvolvimento de Sistemas]
Seja o seguinte vetor, ordenado de forma ascendente:

indiceMeio (Iterao 1)

Caso se utilize um algoritmo de busca binria, quantas iteraes sero necessrias


para que o valor 80 seja encontrado?
indiceEsq = 0
(A) 2 indiceDir = 8
(B) 3
(C) 4
(D) 8
(E) 9

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 23
[CESGRANRIO - 2011 - FINEP - Analista - Desenvolvimento de Sistemas]
Seja o seguinte vetor, ordenado de forma ascendente:

indiceMeio (Iterao 2)

Caso se utilize um algoritmo de busca binria, quantas iteraes sero necessrias


para que o valor 80 seja encontrado?
indiceEsq = 0  5
(A) 2 indiceDir = 8
(B) 3
(C) 4
(D) 8
(E) 9

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 23
[CESGRANRIO - 2011 - FINEP - Analista - Desenvolvimento de Sistemas]
Seja o seguinte vetor, ordenado de forma ascendente:

indiceMeio (Iterao 3)

Caso se utilize um algoritmo de busca binria, quantas iteraes sero necessrias


para que o valor 80 seja encontrado?
indiceEsq = 0  5  7
(A) 2 indiceDir = 8
(B) 3
(C) 4
(D) 8
(E) 9

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 23
[CESGRANRIO - 2011 - FINEP - Analista - Desenvolvimento de Sistemas]
Seja o seguinte vetor, ordenado de forma ascendente:

Caso se utilize um algoritmo de busca binria, quantas iteraes sero necessrias


para que o valor 80 seja encontrado?

(A) 2
(B) 3
(C) 4
(D) 8
(E) 9

Algoritmos e Estruturas de dados Rodrigo Adur


Gabarito

17 Certo 21 Errado
18 Errado 22 Certo
19 E 23 B
20 Certo

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
Algoritmos de Ordenao
 Principais caractersticas
 Os algoritmos de ordenao so de fundamental importncia na
cincia da computao.
 O melhor algoritmo para determinada aplicao depende, entre
outros fatores, do nmero de itens a ordenar e do grau de
ordenao j apresentado por esses itens.
 Ao se ordenar um conjunto de valores, uma questo relevante o
tratamento de elementos que possuem o mesmo valor. Um
algoritmo de ordenao estvel se no altera a posio relativa
de elementos que tm um mesmo valor.

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Principais caractersticas
 Considerando um vetor desordenado com os elementos abaixo:
[44 , 55, 221, 66, 77, 33, 11, 222, 88]

 Quando o vetor ordenado por um algoritmo estvel, a ordem


relativa dos itens com chaves iguais mantm-se inalterada aps a
ordenao.
Vetor ordenado com algoritmo estvel
[11, 221, 222, 33, 44, 55, 66, 77, 88]

 Quando o vetor ordenado por um algoritmo no estvel, a


ordem relativa dos itens com chaves iguais alterada aps a
ordenao.
Vetor ordenado com algoritmo no estvel
[11, 222, 221, 33, 44, 55, 66, 77, 88]

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Selection Sort
 um tipo de ordenao por seleo que consiste em trocar o
menor elemento de uma lista com o elemento posicionado no
inicio da lista, depois o segundo menor elemento para a segunda
posio e assim sucessivamente.
 Essa algoritmo admite uma variao onde a troca baseada no
maior elemento que posicionado no final da lista.
 Algoritmos de ordenao no estvel.
 Complexidade O(n2).

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Implementao do Selection Sort

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 1 / inicio]
4 6 8 1 5 2 Posio menor valor: 0
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 1 / comparao 1]
4 6 8 1 5 2 Posio menor valor: 0
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 1 / comparao 2]
4 6 8 1 5 2 Posio menor valor: 0
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 1 / comparao 3]
4 6 8 1 5 2 Posio menor valor: 3
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 1 / comparao 4]
4 6 8 1 5 2 Posio menor valor: 3
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 1 / comparao 5]
4 6 8 1 5 2 Posio menor valor: 3
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

Troca

[Iterao 1 / final]
1 6 8 4 5 2 Posio menor valor: 3
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 2 / inicio]
1 6 8 4 5 2 Posio menor valor: 1
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 2 / comparao 1]
1 6 8 4 5 2 Posio menor valor: 1
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 2 / comparao 2]
1 6 8 4 5 2 Posio menor valor: 3
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 2 / comparao 3]
1 6 8 4 5 2 Posio menor valor: 3
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 2 / comparao 4]
1 6 8 4 5 2 Posio menor valor: 5
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

Troca

[Iterao 2 / final]
1 2 8 4 5 6 Posio menor valor: 5
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 3 / inicio]
1 2 8 4 5 6 Posio menor valor: 2
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 3 / comparao 1]
1 2 8 4 5 6 Posio menor valor: 3
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 3 / comparao 2]
1 2 8 4 5 6 Posio menor valor: 3
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 3 / comparao 3]
1 2 8 4 5 6 Posio menor valor: 3
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

Troca

[Iterao 3 / final]
1 2 4 8 5 6 Posio menor valor: 3
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 4 / inicio]
1 2 4 8 5 6 Posio menor valor: 3
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 4 / comparao 1]
1 2 4 8 5 6 Posio menor valor: 4
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 4 / comparao 2]
1 2 4 8 5 6 Posio menor valor: 4
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

Troca

[Iterao 4 / final]
1 2 4 5 8 6 Posio menor valor: 4
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 5 / inicio]
1 2 4 5 8 6 Posio menor valor: 4
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

[Iterao 5 / comparao 1]
1 2 4 5 8 6 Posio menor valor: 5
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

Troca

[Iterao 5 / final]
1 2 4 5 6 8 Posio menor valor: 5
0 1 2 3 4 5

ndice

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Selection Sort?

1 2 4 5 6 8
0 1 2 3 4 5

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Bubble Sort
 O algoritmo de ordenao bubble sort um mtodo simples de
ordenao por troca.
 O vetor percorrido do inicio ao fim onde cada elemento
comparado com o elemento posterior.
 Caso o elemento posterior seja menor, ocorre uma troca
entre os dois elementos.
 Esse procedimento garante que o maior elemento ficar no
final do vetor.

 Baixo desempenho para grandes quantidades de informaes.

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Bubble Sort

 Na primeira iterao so feitas n-1 comparaes e o maior valor


vai para o final do vetor. Na segunda iterao so feitas n-2
comparaes e o segundo maior valor vai para o final do vetor, e
assim por diante. Isso ocorre por que a cada iterao o maior
valor que ainda no foi para sua posio, vai para o final do vetor.
 Algoritmos de ordenao estvel.
 Complexidade no pior caso: O(n2).

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Implementao do Bubble Sort

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

[Iterao 1 / comparao 1]
4 6 8 1 5 2
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

[Iterao 1 / comparao 2]
4 6 8 1 5 2
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

Troca

[Iterao 1 / comparao 3]
4 6 8 1 5 2
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

Troca

[Iterao 1 / comparao 4]
4 6 1 8 5 2
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

Troca

[Iterao 1 / comparao 5]
4 6 1 5 8 2
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

[Iterao 2 / comparao 1]
4 6 1 5 2 8
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

Troca

[Iterao 2 / comparao 2]
4 6 1 5 2 8
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

Troca

[Iterao 2 / comparao 3]
4 1 6 5 2 8
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

Troca

[Iterao 2 / comparao 4]
4 1 5 6 2 8
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

Troca

[Iterao 3 / comparao 1]
4 1 5 2 6 8
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

[Iterao 3 / comparao 2]
1 4 5 2 6 8
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

Troca

[Iterao 3 / comparao 3]
1 4 5 2 6 8
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

[Iterao 4 / comparao 1]
1 4 2 5 6 8
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

Troca

[Iterao 4 / comparao 2]
1 4 2 5 6 8
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

[Iterao 5 / comparao 1]
1 2 4 5 6 8
0 1 2 3 4 5

j i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Bubble Sort?

1 2 4 5 6 8
0 1 2 3 4 5

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Ordenao por Insero
 Os algoritmos insero direta e ordenao shell so exemplos de
algoritmos de ordenao por insero.

 Esse mtodo pode ser comparado com as aes


que realizamos ao ordenar uma mo de cartas
de baralho. As cartas so inseridas, uma de cada
vez, em seu local correto. Cada carta inserida
de forma a manter a ordem por naipe e valor.

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Insero Direta
 Comportamento:
 O vetor dividido em dois subgrupos: um com os
elementos ordenados e outro com os no ordenados.
 A princpio, o subgrupo ordenado tem somente o primeiro
elemento do vetor e o segundo subgrupo todos os outros.
 Cada elemento do subgrupo desordenado do vetor
colocado no subgrupo ordenado do vetor, um de cada vez,
na posio correta.
 Ao final desse processo, todos os elementos do vetor
estaro ordenados.

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Insero Direta
 Algoritmos de ordenao estvel.
 O algoritmo de insero direta mais eficiente se os elementos a
serem ordenados j estiverem prximos de sua ordem final de
classificao.

 Suas complexidade no pior caso O(n2). Ela ocorre quando o


vetor esta totalmente desordenado.

 Sua complexidade no melhor caso O(n). Ela ocorre quando o


vetor esta totalmente ordenado.

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Implementao da Insero Direta

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com a Insero Direta?


(Verso simplificada)

Parte Parte
ordenada desordenada

4 6 8 1 5 2 1 iterao
0 1 2 3 4 5

1 comparao
i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com a Insero Direta?


(Verso simplificada)

Parte Parte
ordenada desordenada

4 6 8 1 5 2 2 iterao
0 1 2 3 4 5

1 comparao
i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com a Insero Direta?


(Verso simplificada)

Parte Parte
ordenada desordenada

4 6 8 1 5 2 3 iterao
0 1 2 3 4 5

3 comparaes
i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com a Insero Direta?


(Verso simplificada)

Parte Parte
ordenada desordenada

1 4 6 8 5 2 4 iterao
0 1 2 3 4 5

3 comparaes
i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com a Insero Direta?


(Verso simplificada)

Parte Parte
ordenada desordenada

1 4 5 6 8 2 5 iterao
0 1 2 3 4 5

5 comparaes
i

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com a Insero Direta?


(Verso simplificada)

Parte Parte
ordenada desordenada

1 2 4 5 6 8
0 1 2 3 4 5

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Heap Sort
 Esse algoritmo de ordenao faz uso de uma estrutura de dados
chamada heap para gerenciar as informaes.
 A estrutura de dados heap pode ser vista como uma rvore
binria quase completa.
 Existem dois tipos de heaps, o algoritmo de ordenao por heap
utiliza heaps de mximo. Nesse tipo de heap, o valor de um n
deve ser no mximo o valor do seu pai.
 Heap sort um algoritmo de ordenao no estvel.
 Possui complexidade O(nlogn).

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Operaes de um heap
 Max-Heapify essa operao usada para manter a propriedade
de um heap de mximo. Ela possui como entrada o arranjo A e o
ndice i para o arranjo. Essa operao permite que A[i] obedea
propriedade do heap de mximo.
 Build-Max-Heap essa operao converte um arranjo em um
heap de mximo.

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Representao de um heap de mximo

N raiz
Nvel 0

Nvel 1

Nvel 2

Nvel 3

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Funcionamento do Heap Sort
 Construo de um heap de mximo no arranjo de entrada (Build-
Max-Heap).
 A sequencia abaixo executada at que no reste mais nenhum
elemento no heap:
 Coloca-se o A[0] (maior elemento) em sua posio correta
no vetor, efetuando uma troca entre os elementos.
 O elemento de maior valor excluindo logicamente do
heap.
 Faz com que o elemento A[0] mantenha a propriedade de
um heap mximo (Max-Heapify).

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Implementao do Heap Sort em java

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?

10 7 14 16 2 8 4 1 3 9
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?


+ Construo da heap de mximo

16 14 10 8 7 9 3 2 4 1
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?


+ Troca dos Elementos.
+ Exclui o elemento de maior valor do heap.
+ Elemento A[0] mantm as caractersticas do heap.

16 14 10 8 7 9 3 2 4 1
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?

14 8 10 4 7 9 3 2 1 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?


+ Troca dos Elementos
+ Exclui o elemento de maior valor do heap
+ Elemento A[0] mantm as caractersticas do heap

14 8 10 4 7 9 3 2 1 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?

10 8 9 4 7 1 3 2 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?


+ Troca dos Elementos
+ Exclui o elemento de maior valor do heap
+ Elemento A[0] mantm as caractersticas do heap

10 8 9 4 7 1 3 2 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?

9 8 3 4 7 1 2 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?


+ Troca dos Elementos
+ Exclui o elemento de maior valor do heap
+ Elemento A[0] mantm as caractersticas do heap

9 8 3 4 7 1 2 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?

8 7 3 4 2 1 9 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?


+ Troca dos Elementos
+ Exclui o elemento de maior valor do heap
+ Elemento A[0] mantm as caractersticas do heap

8 7 3 4 2 1 9 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?

7 4 3 1 2 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?


+ Troca dos Elementos
+ Exclui o elemento de maior valor do heap
+ Elemento A[0] mantm as caractersticas do heap

7 4 3 1 2 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?

4 2 3 1 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?


+ Troca dos Elementos
+ Exclui o elemento de maior valor do heap
+ Elemento A[0] mantm as caractersticas do heap

4 2 3 1 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?

3 2 1 4 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?


+ Troca dos Elementos
+ Exclui o elemento de maior valor do heap
+ Elemento A[0] mantm as caractersticas do heap

3 2 1 4 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?

2 1 3 4 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?


+ Troca dos Elementos
+ Exclui o elemento de maior valor do heap
+ Elemento A[0] mantm as caractersticas do heap

2 1 3 4 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?

1 2 3 4 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Heap Sort?

1 2 3 4 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Merge Sort
 Esse algoritmo segue o paradigma diviso e conquista.
 Funcionamento do merge sort:
 Diviso: Divide a sequncia de n elementos que deve ser
ordenada em subsequncias de n/2 elementos cada uma.
 Conquista: Ordena as duas sequencias recursivamente. A
recurso termina quando a sequncia a ser ordenada tiver
apenas um elemento.
 Combinao: Intercala as duas subsequncias ordenadas
para produzir a resposta ordenada.

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Merge Sort
 A operao mais importante desse algoritmo conhecida como
merge. Ela consiste da intercalao de duas sequencias j
ordenadas.
 A operao merge recebe duas subsequncias j ordenadas e
mescla todos os valores mantendo o resultado ordenado em um
nico subarranjo.
 Merge sort um algoritmo de ordenao estvel.
 Possui complexidade O(nlogn).

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Implementao do Merge Sort em java

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Implementao do Merge Sort em java

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Como ordenar o vetor abaixo com o Merge Sort?

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Quick Sort
 O quick sort um mtodo de ordenao por troca que aplica o
paradigma de diviso e conquista.
 Funcionamento:
 Um elemento do arranjo ser escolhido como piv.
 Em seguida o arranjo dividido em 2 subarranjos:
 Elementos menores ou iguais ao piv.
 Elementos maiores que o piv
 Os dois arranjos do passo anterior so ordenados
recursivamente com o quick sort.

 Observao: Caso base ocorre quando o vetor possui


somente um elemento.

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Quick Sort
 Esse algoritmo no requer uma estrutura complementar para sua
execuo, todo o processamento ocorre no mesmo arranjo de
origem.
 Algoritmo de ordenao no estvel.
 Complexidade no pior caso O(n2).
 Complexidade no melhor caso O(nlogn).

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Implementao do Quick Sort em java

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Implementao do Quick Sort em java

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Quick Sort?


piv
partition

Valores ordenados
4

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Quick Sort?


piv
partition

1 2 3

Valores ordenados
1 2 3 4

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Quick Sort?


piv
partition
9 7 8 5

5 7 8 9

quicksort

7 8 9

Valores ordenados
1 2 3 4 5

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Quick Sort?


piv
partition
7 8 9

7 8 9

quicksort

7 8

Valores ordenados
1 2 3 4 5 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao

 Como ordenar o vetor abaixo com o Quick Sort?


piv
partition
7 8

7 8

Valores ordenados
1 2 3 4 5 7 8 9

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Tabela resumo

Algoritmos e Estruturas de dados Rodrigo Adur


Algoritmos de Ordenao
 Mtodos de Ordenao

 Ordenao por troca


 Bubble Sort
 Quick Sort
 Ordenao por Insero
 Insero Direta
 Ordenao por Seleo
 Selection Sort
 Heap Sort

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 24
[CESPE - 2010 - ABIN - Oficial Tcnico de Inteligncia]
A respeito dos mtodos de ordenao, pesquisa e hashing, julgue os seguintes
itens:

A estabilidade de um mtodo de ordenao importante quando o conjunto de


dados j est parcialmente ordenado.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 24
[CESPE - 2010 - ABIN - Oficial Tcnico de Inteligncia]
A respeito dos mtodos de ordenao, pesquisa e hashing, julgue os seguintes
itens:

A estabilidade de um mtodo de ordenao importante quando o conjunto de


dados j est parcialmente ordenado.
Certo Errado

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 25
[2011 - Cesgranrio - FINEP Analista de Desenvolvimento de Sistemas]
Considerando-se a anlise assinttica (Notao Big O), qual a complexidade do
caso mdio do algoritmo de ordenao chamado de Ordenao por Insero?

A) O(n)
B) O(1)
C) O(n)
D) O(n log n)
E) O(log n)

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 25
[2011 - Cesgranrio - FINEP Analista de Desenvolvimento de Sistemas]
Considerando-se a anlise assinttica (Notao Big O), qual a complexidade do
caso mdio do algoritmo de ordenao chamado de Ordenao por Insero?

A) O(n)
B) O(1)
C) O(n)
D) O(n log n)
E) O(log n)

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 26
[2010 - Cesgranrio BACEN Analista]
Uma fbrica de software foi contratada para desenvolver um produto de anlise de
riscos. Em determinada funcionalidade desse software, necessrio realizar a
ordenao de um conjunto formado por muitos nmeros inteiros. Que algoritmo
de ordenao oferece melhor complexidade de tempo (Big O notation) no pior
caso?

A) Merge sort
B) Insertion sort
C) Bubble sort
D) Quick sort
E) Selection sort

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 26
[2010 - Cesgranrio BACEN Analista]
Uma fbrica de software foi contratada para desenvolver um produto de anlise de
riscos. Em determinada funcionalidade desse software, necessrio realizar a
ordenao de um conjunto formado por muitos nmeros inteiros. Que algoritmo
de ordenao oferece melhor complexidade de tempo (Big O notation) no pior
caso?

A) Merge sort
B) Insertion sort
C) Bubble sort
D) Quick sort
E) Selection sort

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 27
[2009 - FCC - TRT - Analista Tecnologia da Informao]
So algoritmos de classificao por trocas apenas os mtodos

A) SelectionSort e InsertionSort.
B) MergeSort e BubbleSort.
C) QuickSort e SelectionSort.
D) BubbleSort e QuickSort.
E) InsertionSort e MergeSort.

Algoritmos e Estruturas de dados Rodrigo Adur


Questo 27
[2009 - FCC - TRT - Analista Tecnologia da Informao]
So algoritmos de classificao por trocas apenas os mtodos

A) SelectionSort e InsertionSort.
B) MergeSort e BubbleSort.  Ordenao por troca
C) QuickSort e SelectionSort.  Bubble Sort
D) BubbleSort e QuickSort.  Quick Sort
E) InsertionSort e MergeSort.

Algoritmos e Estruturas de dados Rodrigo Adur


Gabarito

24 Errado 26 A
25 A 27 D

Algoritmos e Estruturas de dados Rodrigo Adur


FIM

Rodrigo Adur
rodrigoadurti@gmail.com