Escolar Documentos
Profissional Documentos
Cultura Documentos
Programação Estruturada
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
PROGRAMAÇÃO ESTRUTURADA
Bibliografia
O livro abaixo, escrito por brasileiros, muito utilizado em cursos acadêmicos, versa das
estruturas básicas e do uso de três linguagens: algoritmos, linguagem mais próxima do nosso
dia a dia; Java; C e C++; e Pascal.
Computação
Desde o início da existência do homem ele tem procurado criar máquinas que o auxiliem
em seus trabalhos, diminuindo esforços e economizando tempo.
No início, as máquinas eram produzidas para atividades físicas, iniciando-se, posterior-
mente, máquinas com atividades intelectual, tais como o desenvolvimento de calculadoras
mais remotas até computadores.
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O computador é capaz de auxiliar em qualquer coisa que lhe seja solicitada, é consciente,
trabalha e possui muita energia, mas não tem iniciativa, nenhuma independência, não é cria-
tivo nem inteligente, e por isso precisa receber instruções nos mínimos detalhes (algoritmos).
Quanto ao “não é criativo nem inteligente”, é preciso tomar cuidado com a evolução das
máquinas e sistemas. Atualmente, com o machine learning as máquinas possuem uma capa-
cidade latente de aprendizado e simulação (aproximação) de inteligência.
5m
Para o computador realizar uma tarefa é preciso que haja uma linguagem que o oriente
a executar alguma atividade.
Processamento de Dados
Algoritmos
O computador é composto por duas partes:
• Hardware: Partes físicas;
• Software: Programas.
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ser escritos em linguagens de alto nível. Diante dessa linguagem de alto nível, o computador
traduz em uma linguagem em que o usuário melhor possa compreender, algo chamado de
compilação.
As etapas para o desenvolvimento de um programa são:
1. Análise: estuda o enunciado do problema para definir os dados de entrada, o proces-
samento e os dados de saída. Ou seja, antes do processo de programação, serão realizadas
análises do problema, para que assim se possa checar os dados de entrada e saída.
10m
2. Algoritmo: utiliza ferramentas do tipo narrativa, fluxograma ou português estruturado
para descrever o problema com suas soluções.
3. Codificação: o algoritmo é transformado em códigos de linguagem de programação
escolhida para se trabalhar. Exemplo: Java, C, Python. Os algoritmos podem ser traduzi-
dos para qualquer uma dessas linguagens, cada qual com suas particularidades e objetivos
específicos.
Para o ser humano, a leitura desse algoritmo é de fácil compreensão. Contudo, para o
computador, esse algoritmo está bastante abstrato, sendo de difícil compreensão.
Programação Estruturada
Programação estruturada é um paradigma de programação que visa melhorar a clareza,
qualidade e tempo de desenvolvimento de um programa de computador, fazendo uso exten-
sivo das estruturas de controle de seleção (SE / ENTÃO / SENÃO / CASO) e repetição (PARA
/ REPITA / ENQUANTO), estruturas de blocos e sub-rotinas.
ANOTAÇÕES
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A programação estruturada surge devido à crise de software (anos 50). Ou seja, perce-
beu-se que, quando se escrevia em código muito próximo ao que a máquina compreendia
ou sem tanta orientação, o código era de difícil manutenção. Neste interim, a programação
orientada surgir como uma série de orientação para desenvolver códigos de fácil manuten-
ção e com poucos problemas.
15m
O princípio básico de programação estruturada é que um programa é composto por
blocos elementares de código que se interligam através de três mecanismos básicos, que
são sequência, seleção e iteração. Cada uma destas construções tem um ponto de início
(o topo do bloco) e um ponto de término (o fim do bloco) de execução.
Exemplo: “Se chover, torna-se preciso levar o guarda-chuva. Se não chover, não se pre-
cisa levar o guarda-chuva”. Note que, diante das premissas, há orientações com base um
condições lógicas.
GO TO
Em 1968, Edsger W. Dijkstra, através do artigo "A Case against the GO TO Statement"
critica o uso excessivo do comando de desvio incondicional GOTO nos programas desenvol-
vidos na época.
ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Variáveis
• Um programa, recebe dados que precisam ser armazenados no computador para que
possam ser utilizados no processamento;
• Este armazenamento é feito na memória;
• Quando uma operação aritmética recebe dois operandos, cada operando é armaze-
nado em um endereço de memória diferente, para ser utilizado no cálculo;
• Como cada endereço de memória pode armazenar dados várias vezes, ou seja, seu
conteúdo pode variar, chamamos estas posições de variáveis.
Identificadores
Representam os nomes das variáveis, dos programas, constantes, rotinas, entre outros.
Exemplo: f(x) é o mesmo que função, na matemática.
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Tipos de Dados
Os tipos de dados determinam quantos de memória uma determinada variável ocupará e
o tipo de conteúdo que será armazenado. Os mais comuns são:
25m
Os tipos de dados variam muito de linguagem para linguagem, visto que algumas supor-
tam números complexos, inteiros, flutuantes, os tipos numéricos, os tipos booleanos e carac-
teres. De acordo com o tipo de dado diferente, um tanto mais de espaço será utilizado.
Estrutura Sequencial
Estrutura básica para algoritmos em pseudocódigo (ou portugol):
ALGORITMO
DECLARE
Bloco de comandos
FIM_ALGORITMO
Declaração de Variáveis
Variáveis são declaradas após a palavra DECLARE, e os tipos mais utilizados são NUMÉ-
RICO LITERAL ou LÓGICO:
DECLARE
X – NUMÉRICO
Y, Z LITERAL
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Atribuição
30m
Utilizado para atribuir um valor ou operação à uma variável
Representado pelo símbolo "←":
X–←4
X–←X+2
Y ← "aula"
Em geral, é possível realizar operações com a próxima variável. Mas o resultado da ava-
liação será atribuído ao lado esquerdo da expressão: X + 2
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
PROGRAMAÇÃO ESTRUTURADA II
O comando de entrada é utilizado para receber dados informados pelo usuário. É repre-
sentado pela palavra LEIA:
LEIA X
O comando de saída é utilizado para mostrar dados para o usuário na tela do monitor.
Representado pela palavra ESCREVA:
ESCREVA Y
O “LEIA” será visto como o código de entrada e o “ESCREVA” será visto como o código
de saída de dados.
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O comando só será executado se a condição for verdadeira. Uma condição é uma com-
5m
paração que possui dois valores possíveis: verdadeiro ou falso.
SE condição
ENTÃO INÍCIO
comando1
comando2
comando3
FIM
Se a condição for verdadeira, será executado o comando1, caso contrário, será execu-
tado o comando2.
SE condição
ENTÃO INÍCIO
comando1
comando2
SENÃO INÍCIO
comando3
comando4
FIM
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exemplo
ALGORITMO
DECLARE N1, N2, M NUMÉRICO
ESCREVA "Digite as duas notas"
LEIA N1, N2
M ← (N1 + N2)/2
ESCREVA "Média = ", M
SE (M >= 7)
ENTÃO ESCREVA "Aprovado"
SENÃO ESCREVA "Reprovado"
FIM_ALGORITMO
O comando “Digite as duas notas” buscará calcular a média aritmética. Após o resultado
da média aritmética, nota-se uma condicional, resultando no “Aprovado”, se verdadeiro, ou
10m “Reprovado”, se falso.
SE condição1
ENTÃO comando1
SENÃO INÍCIO
SE condição 2
ENTÃO comando2
SENÃO comando3
FIM
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Acima, a estrutura de decisão do SENÃO INÍCIO está aninhada com a primeira estrutura
de decisão, ocorrendo apenas no caso do SENÃO.
Estruturas de decisão podem ser aninhadas com o objetivo que sejam verificadas várias
alternativas possíveis.
Qualquer outro tipo de bloco pode ser aninhado. E quanto mais blocos, um tanto mais de
aninhamento haverá, provocando uma maior complexidade.
SE IDADE > 10
ENTÃO ESCREVA "IDADE ACIMA DE 10 ANOS"
SENÃO INÍCIO
SE IDADE < 10
ENTÃO ESCREVA "IDADE MENOR DE 10 ANOS"
SENÃO ESCREVA "TEM EXATAMENTE 10 ANOS"
FIM
Havendo muitas estruturas de decisões distintas e aninhadas, nota-se uma grande difi-
culdade quanto ao código. Em vista disso, existe uma outra estrutura, a chamada “Estrutura
de seleção múltipla ESCOLHA-CASO”.
ESCOLHA variável-de-verificação
CASO valor1 FAÇA
comando1
comando2
CASO valor2 FAÇA
comando3
comando4
...
FIM
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
No exemplo acima, caso o valor “CASO valor1 FAÇA” seja executado, o resultado será
15m “comando1” e “comando2”, e assim sucessivamente.
É possível inserir acima quantos blocos forem precisos, alocando-os um abaixo do outro.
Sobre essa informação, observe o exemplo abaixo:
ALGORITMO
DECLARE NUMERO1, NUMERO2, RESULTADO NUMÉRICO
OPERACAO : CARACTERE
ESCREVA "DIGITE O PRIMEIRO NÚMERO: "
LEIA NUMERO1
ESCREVA "DIGITE A OPERAÇÃO: "
LEIA OPERACAO
ESCREVA "DIGITE O SEGUNDO NÚMERO: "
LEIA NUMERO2
SE OPERACAO = "+" ENTAO RESULTADO ← NUMERO1 + NUMERO2
SENAO INICIO
SE OPERACAO = "-" ENTAO RESULTADO ← NUMERO1 - NUMERO2
SENAO INICIO
SE OPERACAO = "*" ENTAO RESULTADO ← NUMERO1 * NUMERO2
SENAO INICIO
SE OPERACAO = "/" ENTAO RESULTADO ← NUMERO1 / NUMERO2
FIM
FIM
FIM
ESCREVA "RESULTADO: ", RESULTADO
FIM_ALGORITMO
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ALGORITMO
DECLARE NUMERO1, NUMERO2, RESULTADO NUMÉRICO
OPERACAO : CARACTERE
ESCREVA "DIGITE O PRIMEIRO NÚMERO: "
LEIA NUMERO1
ESCREVA "DIGITE A OPERAÇÃO: "
LEIA OPERACAO
ESCREVA "DIGITE O SEGUNDO NÚMERO: "
LEIA NUMERO2
ESCOLHA OPERACAO
CASO "+" FAÇA
RESULTADO ← NUMERO1 + NUMERO2
CASO "-" FAÇA
RESULTADO ← NUMERO1 - NUMERO2
CASO "*" FAÇA
RESULTADO ← NUMERO1 * NUMERO2
CASO "/" FAÇA
RESULTADO ← NUMERO1 / NUMERO2
FIM
ESCREVA "RESULTADO: ", RESULTADO
FIM_ALGORITMO
ESCOLHA operacao
CASO "+" FAÇA
resultado ← numero1 + numero2
CASO "-" FAÇA
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (CESPE/EBC/ANALISTA/ADMINISTRAÇÃO DE SISTEMAS/2011) Em programação
estruturada, por meio do mecanismo de seleção, é possível testar determinada condi-
ção e estabelecer ações a serem realizadas.
COMENTÁRIO
Mecanismo de seleção é o mesmo que o “SE”.
Estruturas de Repetição
As estruturas de repetição são utilizadas nos casos onde determinados trechos dos algo-
ritmos precisarão ser executados mais de uma vez e, para que não seja necessário reescre-
ver trechos idênticos que aumentariam consideravelmente o tamanho do programa, utiliza-se
as estruturas de repetição.
No caso da seleção, havia um código em que se buscava a sua execução ou não a partir
de determinada condição por meio de uma seleção booleana. Já no caso de repetição, os
blocos de códigos se repetem até que uma condição seja atingida.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O comando1 será executado utilizando a variável I como controle, cujo conteúdo vai
variar do valor inicial até o valor final, de 1 em 1, incrementando automaticamente.
A estrutura PARA é utilizada quando se sabe previamente quantas vezes se busca repetir
o código.
Ela pode também ser utilizada com blocos, podendo ainda ter um número arbitrário
de comandos:
ALGORITMO
DECLARE J NUMÉRICO
PARA J ← 1 ATE 10 FAÇA
INÍCIO
ESCREVA J
FIM
FIM_ALGORITMO
ANOTAÇÕES
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Acima, o ESCREVA J será repetido 10 vezes. Neste caso, o valor de J será atualizado até
25m chegar no valor final determinado.
ALGORITMO "FATORIALCOMPARA"
DECLARE NUMERO, FATORIAL, CONTADOR NUMÉRICO
ESCREVA "DIGITE O NÚMERO PARA CALCULAR O FATORIAL: "
LEIA NUMERO
FATORIAL ← 1
PARA CONTADOR DE 1 ATE NUMERO FACA
INICIO
FATORIAL ← FATORIAL * CONTADOR
FIM
ESCREVA "O FATORIAL DE ", NUMERO, " É : ", FATORIAL
FIM_ALGORITMO
Acima, sabia-se previamente o número de vezes em que o passo seria repetido para
fazer o cálculo do fatorial.
9 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ALGORITMO
DECLARE J NUMÉRICO
J←1
ENQUANTO J <= 10 FAÇA
INICIO
ESCREVA J
J←J+1
FIM
FIM_ALGORITMO
ALGORITMO "FATORIALCOMENQUANTO"
30m
DECLARE NUMERO, FATORIAL, CONTADOR NUMÉRICO
ESCREVA "DIGITE O NÚMERO PARA CALCULAR O FATORIAL: "
LEIA NUMERO
FATORIAL ← 1
CONTADOR ← 1
ENQUANTO CONTADOR <= NUMERO FACA
INICIO
FATORIAL ← FATORIAL * CONTADOR
CONTADOR ← CONTADOR + 1
FIM
ESCREVA "O FATORIAL DE ", NUMERO, " É : ", FATORIAL
FIM_ALGORITMO
Obs.: o encremento é muito importante para que a condição “ENQUANTO CONTADOR <=
NUMERO FACA” seja alterada, evitando um looping infinito.
ANOTAÇÕES
10 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
REPITA
comando1
comando2
ATÉ condição
ALGORITMO
DECLARE J NUMÉRICO
J←1
REPITA
ESCREVA J
J←J+1
ATÉ J > 10
FIM_ALGORITMO
ALGORITMO "SOMAATEVALORIGUALA0"
DECLARE VALORDIGITADO, SOMA NUMÉRICO
SOMA ← 0
REPITA
ESCREVA "DIGITE UM VALOR PARA A SOMA: "
LEIA VALORDIGITADO
SOMA ← SOMA + VALORDIGITADO
ESCREVAL "TOTAL: ", SOMA
ATE VALORDIGITADO = 0
FIM_ALGORITMO
ANOTAÇÕES
11 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GABARITO
1. C
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
12 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Vetor
Um vetor é uma variável composta, homogênea e unidimensional.
É considerada composta porque possui vários valores dentro dela. Ao declarar valores de
X e Y como variáveis, em vetores é possível guardar diversos valores.
É dita homogênea porque todos os valores devem ser do mesmo tipo. Assim, em vetores
de números, somente poderá haver números – a depender da linguagem de programação
(ex.: Java – vetores homogêneos. Já no Java Script, há vetores heterogêneos).
É unidimensional porque somente há uma dimensão (um comprimento) – ex.: fila de valo-
res. Cada valor terá um índice, que é a sua posição em uma fila de variáveis.
É formada por uma sequência de variáveis, todas do mesmo tipo de dados, com o mesmo
identificador (mesmo nome) e alocadas sequencialmente na memória.
Uma vez que as variáveis que compõem o vetor têm o mesmo nome, o que distingue
cada uma delas é um índice, que referencia sua localização dentro da estrutura. Ex.: em uma
fila de pessoas, para interagir com a terceira pessoa da fila, basta contar quantas pessoas
há para se chegar à terceira.
Vetor: Declaração
DECLARE nome[tamanho] tipo
nome: nome da variável do tipo vetor.
tamanho: é a quantidade de variáveis que vão compor o vetor.
tipo: é o tipo básico de dados que poderá ser armazenado na sequência de variáveis que
formam o vetor.
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Vetor: Exemplos
5m
DECLARE X[5] NUMÉRICO
X[1] ← 45
X[4] ← 0
ESCREVA X[4]
Em uma estrutura com vários valores do mesmo tipo, ao invés de declarar diversas vari-
áveis, basta escrever um vetor e entre colchetes o tamanho do vetor.
Carregando um Vetor
PARA I ← 1 ATÉ 5 FAÇA
INÍCIO
ESCREVA "DIGITE O ", I, " NÚMERO"
LEIA X[I]
FIM
É possível realizar uma estrutura de repetição PARA para que ela alimente o vetor com
valores digitados pelo usuário.
Matriz
Uma matriz é uma variável composta homogênea bidimensional formada por uma sequ-
ência de variáveis, todas do mesmo tipo, com o mesmo identificador (mesmo nome) e aloca-
das sequencialmente na memória.
Uma vez que as variáveis têm o mesmo nome, o que as distingue são índices que refe-
renciam sua localização dentro da estrutura. Uma variável do tipo matriz é composta por
linhas e colunas.
Matriz: Declaração
DECLARE nome[linha, coluna] tipo
nome: nome da variável do tipo matriz.
linha: é a quantidade de linhas que vão compor a matriz.
coluna: é a quantidade de colunas que vão compor a matriz.
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
tipo: é o tipo básico de dados que poderá ser armazenado na sequência de variáveis que
formam a matriz.
Matriz: Exemplos
DECLARE X[3,5] NUMÉRICO
X[1, 2] ← 45
X[2, 5] ← 0
ESCREVA X[1, 2]
Registros
Registros são estruturas que podem agregar diferentes informações. Dessa maneira,
podem ser feitas diferentes combinações, gerando novos tipos de dados.
Um registro é uma coleção de campos, em que cada campo pode ser de um tipo de dado
diferente. Por isso, os registros são conhecidos como variáveis compostas heterogêneas.
ANOTAÇÕES
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Registros: Declaração
DECLARE nome_da_variável_registro REGISTRO (nome_campo tipo_do_campo...)
Registros: Exemplo
DECLARE conta REGISTRO (num, saldo NUMÉRICO, nome LITERAL)
Acima, o registro declarado é denominado conta e possui três campos, os campos num
e saldo são campos numéricos e o campo nome é do tipo literal.
É possível combinar tipos de dados homogêneos com o tipo de dado registro para con-
seguir mais dados. Exemplo: em uma escola com vários alunos, é possível ter um vetor de
alunos, e cada aluno possui um registro com suas propriedades.
Arquivo
Um arquivo é formado por uma coleção de registros, cada registro é composto por campos
e cada campo possui suas características específicas.
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (IDECAN/INMETRO/ASSISTENTE EXECUTIVO EM METROLOGIA E QUALDIDADE/
INFORMÁTICA/2015) Toda linguagem de programação possui instruções que contro-
lam o fluxo da execução de um programa. Essas estruturas podem ser de decisão,
decisão encadeada, repetição, repetição encadeada, cada uma com seus respectivos
comandos. Observe o fluxograma.
COMENTÁRIO
A imagem da questão apresenta uma condição booleana.
O SE está representado pela condição. O ENTÃO está representado pelo fluxo de Verda-
deiro, enquanto o SENÃO está representando quando a resposta for Falsa.
20m
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O código de uma sub-rotina é carregado uma vez e pode ser executado quantas vezes
forem necessárias. Assim, os programas tendem a ficar menores e mais organizados, uma
vez que o problema pode ser dividido em tarefas menores.
Em geral, um programa é executado linearmente, uma linha após a outra, até o fim.
Entretanto, quando são utilizadas sub-rotinas, é possível a realização de desvios na execu-
ção natural dos programas. Assim, um programa é executado linearmente até a chamada de
uma sub-rotina.
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Tipos de Sub-rotinas
• Funções (functions);
• Procedimentos (procedures).
Funções
É comum encontrar, nas linguagens de programação, várias funções embutidas, por
exemplo, sin (seno), cos (cosseno), abs (valor absoluto), sqrt (raiz quadrada).
Quando uma função é chamada, o programa que chama a função fica em estado de
espera e o controle passa para as instruções que definem a função.
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação Estruturada III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GABARITO
1. e
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Heaps
HEAPS
Esta estrutura de dados não é, talvez, das mais faladas, como as árvores, vetor, listas,
pilhas, filas: é a HEAPS, um nome em inglês, que não é traduzido.
Quem já trabalhou com Java já ouviu falar de HEAPS porque tem alguma relação com o
gerenciamento de memória do Java.
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Heaps
Introdução
•
Um heap é uma estrutura de dados baseada em árvore na qual todos os nós da árvore
estão em uma ordem específica. Quando a referência é estrutura de dados, de imediato há
a associação com filas, pilhas, vetor, árvores, até mesmo grafo: é uma forma de organizar
dados na memória do computador. Existem vários tipos de árvores, as ordenadas, as não
ordenadas, árvores bem interessantes, como a árvore AVL, que facilita a busca, a coorde-
nação dos elementos, a inserção de busca de elementos. Para cada tipo de operação, para
cada foco existente no sistema, haverá uma estrutura de dados que será a mais adequada
para atender esse sistema.
No caso do heap é uma estrutura de dados que será bastante adequada para que se
possa ter algo como uma prioridade, ter tarefas em prioridade: inserem-se novos elementos,
novos Jobs, novas tarefas, determinando prioridades de forma a acessá-las de forma mais
rápida possível. O que se pretende é uma alta performance de inserção de tarefas e acessar
a prioritária da forma mais rápida possível. Este é o exemplo clássico de utilização de heaps.
Por exemplo, se X é o nó pai de Y, então o valor de X segue uma ordem específica com rela-
ção ao valor de Y, e a mesma ordem será seguida pela árvore;
5m
O número máximo de filhos de um nó em um heap depende do tipo de heap. No entanto,
no tipo mais usado, existem no máximo 2 filhos de um nó e é conhecido como heap binário;
No heap binário, se for uma árvore binária completa com N nós, então ele tem a menor altura
possível, que é log 2 N. É uma estrutura que vai tentar se manter triangular e dinamicamente,
vai reposicionar os elementos para evitar a existência de árvores deterioradas, aquelas árvo-
res que puxam galhos para um determinado lado, o que deteriora muito a ordenação dos ele-
mentos por busca. É uma árvore que vai se “rebalancear” para ficar na menor forma possível,
o mais triangular possível.
No diagrama, você pode observar uma sequência específica, ou seja, cada nó tem um
valor maior que qualquer um de seus filhos. Suponha que haja N Trabalhos em uma fila a
serem executados e cada trabalho tenha sua própria prioridade.
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Heaps
O trabalho com prioridade máxima será concluído primeiro que os outros. A cada ins-
tante, estamos concluindo um trabalho com prioridade máxima e, ao mesmo tempo, também
estamos interessados em inserir um novo trabalho na fila com sua própria prioridade.
Numa árvore AVL, de busca, o elemento do meio será, mais ou menos, o elemento mediano,
sendo que à direita estão os elementos maiores e à esquerda os elementos menores.
No caso do heap a tendência é de que os elementos maiores estejam mais em direção ao
topo e na raiz da heap, no caso de uma heap máxima, estará o maior elemento de todos.Por-
tanto, a cada instante, precisamos verificar o trabalho com prioridade máxima para concluí-lo
e também inserir se há um novo trabalho. Essa tarefa pode ser muito facilmente executada
usando um heap, considerando N trabalhos como N nós da árvore.
É necessário saber qual é o caso de uso principal do heap: não é para ordenação, não
é para busca, é para, por exemplo, prioridades de trabalhos, encontrar o trabalho com maior
prioridade. Ele terá operações que são mais simples do que a de uma árvore AVL que faz
uma série de rotações à direita e à esquerda, ele precisará de menos rotações o que vai
consumir menos recursos do sistema e, por outro lado, ele também tem uma finalidade espe-
cífica para localizar somente o menor ou o maior elemento dentro do heap, o elemento com
maior ou menor prioridade.
Um vetor pode ser usado para simular uma árvore da seguinte maneira: Se estamos
armazenando um elemento no índice i do vetor vet, seu pai será armazenado no índice i/2 (a
menos que seja uma raiz, pois a raiz não tem pai) e pode ser acessado por vet[i/2], e seu filho
esquerdo pode ser acessado por vet[2*i] e seu filho direito pode ser acessado por vet[2*i+1].
O índice de raiz será 1 em um vetor.
Por vezes, para trabalhar com uma árvore, não é necessário trabalhar com ponteiros,
pode-se trabalhar com um vetor tradicional. Um elemento na posição 1, o filho esquerdo
estará à direita e o filho direito em 2 x 1 + 1 = 3. Esses elementos significam que se teria o
seguinte heap.
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Heaps
Podemos usar um vetor para armazenar os nós da árvore. Digamos que temos elemen-
tos com valores {6, 4, 5, 3, 2, 0, 1}.
Heap Máximo
•
Nesse tipo de heap, o valor do nó pai sempre será maior ou igual ao valor do nó filho na
árvore e o nó com o valor mais alto será o nó raiz da árvore.
10m
Implementação: vamos supor que temos um heap com alguns elementos que são arma-
zenados no vetor. A maneira de converter esse vetor em uma estrutura de heap é a seguinte:
Escolhemos um nó no vetor, verificamos se a subárvore esquerda e a subárvore direita são
heaps máximos, em si mesmos e o próprio nó é um heap máximo (seu valor deve ser maior
que todos os nós filhos). Para fazer isso, implementa-se uma função que pode manter a pro-
priedade max heap.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Heaps
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Heaps
Heap Mínimo
•
Nesse tipo de heap, o valor do nó pai sempre será menor ou igual ao valor do nó filho na
árvore e o nó com menor valor será o nó raiz da árvore:
Cada nó tem um valor menor que o valor de seus filhos. Podemos executar as mesmas
operações que as realizadas na construção de max_heap. Primeiro criaremos uma função
que pode manter a propriedade min heap, se algum elemento a estiver violando.
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Heaps
Agora vamos usar a função na construção de min-heap. Executaremos a função nos nós
restantes que não sejam folhas, pois os nós folha são um heap de um elemento:
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Heaps
DIRETO DO CONCURSO
1. (2018/CCV-UFC/ANALISTA DE TECNOLOGIA DA INFORMAÇÃO) Na estrutura de da-
dos min heap (heap mínima), qual das afirmativas abaixo é verdadeira?
20m
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
Heaps
COMENTÁRIO
Heap mínimo
2. (2010/CESPE/INMETRO/PESQUISADOR/DESENVOLVIMENTO DE SISTEMAS) Na
primeira fase do método de ordenação usando uma árvore binária (heapsort), deve ser
montada uma heap a partir do vetor com os dados que se deseja ordenar, conforme os
mostrados na tabela a seguir.
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
Heaps
Considerando essas informações, assinale a opção que apresenta a heap max (toda a
árvore ordenada como uma heap) formada ao final dessa fase, antes da classificação pro-
priamente dita.
a.
b.
c.
d.
ANOTAÇÕES
www.grancursosonline.com.br 10
DESENVOLVIMENTO WEB
Heaps
e.
COMENTÁRIO
Criar uma heap max a partir do vetor abaixo.
GABARITO
1. c
2. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 11
DESENVOLVIMENTO WEB
Pilhas
PILHAS
REFERÊNCIAS
PILHA
O conteúdo de pilha está muito associado ao de fila. É possível fazer analogias diretas ao
mundo real, o que torna mais fácil o entendimento. A fila é quem chega primeiro, sai primeiro,
já quem chega por último vai para o fim da fila e demorará mais para ser atendido. No caso
da pilha, faz-se a analogia clássica com a pilha de pratos que será lavada na pia: os pratos
são colocados um em cima do outro e o último prato colocado é o primeiro a ser lavado.
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Pilhas
Uma pilha é uma estrutura de dados dinâmica, assim como a fila, que admite remoção de
elementos e inserção de novos objetos.
Mais especificamente, uma pilha (stack) é uma estrutura sujeita à seguinte regra de ope-
ração: sempre que houver uma remoção, o elemento removido é o que está na estrutura há
menos tempo. Adiciona-se de baixo para cima, mas a remoção é feita de cima para baixo, ao
contrário da fila, em que será removido da dianteira em relação à traseira.
Em outras palavras, o primeiro objeto a ser inserido na pilha é o último a ser removido.
Exemplo: pilha de pratos para lavar, em que o primeiro prato colocado é o último e ser lavado.
5m
Essa política é conhecida pela sigla LIFO (Last-In-First-Out), ou seja, o último que chega
é o primeiro a sair.
Uma pilha é um Abstract Data Type (ADT), comumente usado na maioria das linguagens
de programação. Exemplo: programação de pilha de trabalho ou de mensagens.
É denominada pilha, pois se comporta como uma pilha do mundo real — por exemplo: um
baralho de cartas ou pilha de pratos, etc.
A pilha é um tipo de dado abstrato porque não trabalha com um tipo específico. Ela não
é usada para trabalhar apenas com números, letras ou com um tipo específico de objeto.
Pode-se ter uma pilha implementa para qualquer tipo diferente de objeto.
Uma pilha do mundo real permite operações apenas em uma extremidade. Por exemplo,
pode-se colocar ou remover uma carta ou prato apenas da parte superior da pilha. Ao contrá-
rio disso, pode-se operar nas duas extremidades da fila.
Da mesma forma, a pilha permite todas as operações de dados em apenas uma extre-
midade. A qualquer momento, pode-se acessar apenas o elemento superior de uma pilha.
Esse recurso torna a estrutura de dados LIFO. LIFO significa Last-in-first-out. Aqui, o ele-
mento que é colocado (inserido ou adicionado) por último é acessado primeiro. Na terminolo-
gia da pilha, a operação de inserção é chamada operação PUSH e a operação de remoção
é chamada operação POP.
ATENÇÃO
É importante saber a nomenclatura em inglês.
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Pilhas
Coloca-se (push) e retira-se (pop) os dados apenas em uma extremidade. Por essa razão,
a pilha é considerada um pouco mais simples que a fila por conta de sua operação.
REPRESENTAÇÃO DE PILHA
Uma pilha pode ser implementada por meio de um vetor, estrutura, ponteiro e lista ligada.
O caso mais simples é a implementação de um vetor, que é uma estrutura de dados de tama-
nho fixo e que tem alocação inicial de memória.
10m
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Pilhas
A pilha pode ser de tamanho fixo ou pode ter um redimensionamento dinâmico. Caso seja
implementada um vetor, a pilha terá um tamanho fixo. Ou seja, pode-se ter o número máximo
de elementos determinado se estiver trabalhando com vetor ou depender da memória e ter
um redimensionamento dinâmico, principalmente se estiver trabalhando com estruturas de
dados, como, por exemplo, a lista ligada, e aumentar o número de elementos.
OPERAÇÕES BÁSICAS
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Pilhas
peek
A operação de peek retorna o elemento que está no topo da pilha (stack) sem removê-lo.
isfull
A operação de isfull pergunta para a pilha se ela está cheia. Se a pilha já está cheia (top
= maxsize), o retorno é true; se não, o retorno é false.
isempty
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Pilhas
push
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Pilhas
Push recebe um número inteiro de dado. Se não estiver full, incrementa o valor do top
em 1 unidade.
stack[top] = data; — a pilha, que é um vetor na posição top, aponta para o dado; se não,
imprime “Não foi possível inserir, pilha está cheia”.
Lembrando que pop é a operação que coloca o elemento na pilha.
pop
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Pilhas
• Etapa 3 — Se a pilha não estiver vazia, acessa o elemento de dados no qual a parte
superior está apontando;
• Etapa 4 — Diminui o valor de top em 1;
• Etapa 5 — Retorna sucesso.
Se não estiver vazio, pega-se data e faz stack[top], top retorna -1 e faz retorno de data;
se não, imprime “Não foi possível recuperar o dado, a pilha está vazia”.
20m
DIRETO DO CONCURSO
1. (2009/UNRIO/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO) Sobre listas encadea-
das, é INCORRETO afirmar que:
A estrutura de dados pilha segue uma política de inserção e remoção do tipo
a. LIFO — Last In, First Out (o último a entrar é o primeiro a sair).
b. FIFO — First In, First Out (o primeiro a entrar é o primeiro a sair).
c. Depth-First (priozirando a profundidade).
d. Beadth-First (priorizando a largura).
e. Beast-First (priorizando o melhor de acordo com uma dada regra).
COMENTÁRIO
A política da pilha é de LIFO (Last-In-First-Out)
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
Pilhas
COMENTÁRIO
Por simplicidade, trabalhar-se-á com vetor de 3 elementos: 2, 1 e 3.
A árvore AVL se auto balanceará em cada inserção, tornando-se uma árvore biná-
ria de busca.
Primeiro, insere-se 2 na raiz da árvore e, depois, 1. Como 1 é menor que 2, ocorre uma
troca. O 3 entra para a direita.
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
Pilhas
Assim, tem-se uma árvore binária de busca balanceada, aonde à esquerda se tem os nós
de valores menores (1) e à direita se tem os nós de números maiores (3). Independente da
ordem dos valores no vetor, a árvore AVL ficaria com essa disposição.
O percurso em ordem é nó esquerdo, raiz e nó direito. Feito isso, são colocados na pilha
1, 2 e 3 na seguinte ordem: 3, 2 e 1.
GABARITO
1. a
2. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
www.grancursosonline.com.br 10
TECNOLOGIA DA INFORMAÇÃO
Filas
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
FILAS
REFERÊNCIA
FILA
A regra de uma fila de banco é que quem entra primeiro irá sair primeiro e quem entra
depois irá sair ao fim da fila. Os elementos do meio não são removidos. Trabalha-se com a
ponta e o final da fila. O elemento novo irá para o fim da fila e o próximo elemento a ser aten-
dido é o da ponta da fila. Uma fila é uma estrutura de dados dinâmica que admite remoção
de elementos e inserção de novos objetos.
Mais especificamente, uma fila (queue) é uma estrutura sujeita à seguinte regra de operação:
sempre que houver uma remoção, o elemento removido é o que está na estrutura há mais tempo.
Em outras palavras, o primeiro objeto inserido na fila é também o primeiro a ser removido. Essa
política é conhecida pela sigla FIFO (First-In-First-Out) — primeiro que entra, primeiro que sai.
ANOTAÇÕES
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
Filas
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A fila é uma estrutura de dados abstrata, um pouco semelhante a pilhas. A fila é abstrata,
porque, em geral, ela admite vários tipos de dados diferentes, não sendo usada apenas para
números ou textos. O conceito irá funcionar para qualquer tipo de dado.
ATENÇÃO
É importante saber diferenciar fila de pilha, principalmente sobre a questão de ordem de
inserção e remoção de elementos.
Diferente das pilhas, uma fila é aberta nas duas extremidades. Uma extremidade é sempre
usada para inserir dados (enfileirar) e a outra é usada para remover dados (enfileirar).
5m
A fila segue a metodologia First-In-First-Out, ou seja, o item de dados armazenado pri-
meiro será acessado primeiro.
A fila possui apenas um sentido. Quem entrou primeiro, sai primeiro; quem entrou por
último, sai por último.
REPRESENTAÇÃO DA FILA
Em uma fila realizamos acessos nas duas extremidades por diferentes razões.
O diagrama a seguir fornecido abaixo tenta explicar a representação da fila como estru-
tura de dados:
ANOTAÇÕES
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
Filas
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
OPERAÇÕES BÁSICAS
As operações da fila podem envolver inicializar ou definir a fila, utilizá-la e depois apa-
ga-la completamente da memória. Aqui tentaremos entender as operações básicas associa-
das às filas:
São necessárias mais funções para tornar a operação da fila acima mencionada efi-
ciente. Estas são:
Existe em várias implementações uma funcionalidade que busca o elemento sem removê-
-lo. O dequeue irá retornar o elemento e, ao mesmo tempo, removê-lo da fila. Já o peek irá
simplesmente retornar o elemento próximo sem removê-lo.
Na fila se desenfileira (ou acessa) dados, apontados pelo ponteiro frontal e, ao enfileirar
(ou armazenar) dados na fila, ajudando o ponteiro traseiro.
peek
int peek () {
return queue[front];
}
Chama-se a operação com o front.
ANOTAÇÕES
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
Filas
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Considerando que existe o queue, ele estará instanciado, com tamanho estável, se terá duas
variáveis, uma que aponta para o início e outra que aponta para o final. É como se houvesse
um vetor vazio e ao colocar elementos dentro dele há ponteiros que irão identificar os valores.
Os ponteiros são front e rear. Quando um os dois apontam para o mesmo lugar, há um
10m
elemento só.
isfull
Como se está usando um vetor de dimensão única para implementar a fila, basta verificar
se o ponteiro traseiro alcança MAXSIZE para determinar se a fila está cheia.
Caso se mantenha a fila em uma lista vinculada circular, o algoritmo será diferente.
Por simplicidade, trabalha-se com uma lista e com um vetor.
bool isfull() {
if(rear == MAXZISE – 1)
return true;
else
return false;
}
Se o ponteiro rear está em maxsize -1, então a fila estará cheia (return true). Se estiver
vazia, dará return false.
OPERAÇÃO DE ENFILEIRAMENTO
As filas mantêm dois ponteiros de dados, frontal e traseiro. Portanto, suas operações são
comparativamente mais difíceis de implementar do que as de pilhas:
O ponteiro traseiro aponta para o espaço que está vazio para que possa enfileirar
outro elemento.
• Etapa 4 — Adicione o elemento de dados ao local da fila, para onde a parte traseira
está apontado;
ANOTAÇÕES
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
Filas
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
No caso da imagem, rear está voltando. Rear apontava para C, e como havia espaço,
adiciona-se D e aponta rear para ele. Se fosse tentado fazer um novo enfileiramento, a fila já
estaria cheia e a operação iria falhar.
enqueue
int enqueue(int data){
if(isfull())
return 0;
rear = rear + 1;
queue[rear] = data;
return 1;
}
Se a fila estiver cheia, retorna a zero. Se a fila não estiver cheia, altera-se o ponteiro do
rear para o dado.
Return 1 aponta que o elemento foi inserido com sucesso.
ANOTAÇÕES
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
Filas
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
OPERAÇÃO DE DESENFILEIRAMENTO
O acesso a dados da fila é um processo de duas tarefas — acesse os dados para onde a
frente está apontando e remova os dados após o acesso. As etapas são tomadas para exe-
cutar a operação de desenfileiramento:
O rear continuará apontando para o mesmo lugar. O front aponta para A, mas ao fazer dequeue,
front apontará para B. O dado que está na posição de A é ignorado e o valor de A é retomado.
15m
A operação de dequeue não só retoma o valor, mas também move o ponteiro frontal.
dequeue
int dequeue() {
if(isempty())
return 0;
int data = queue[front];
front = front + 1
return data;
}
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
Filas
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Verifica se a fila está vazia. Se estiver vazia, retorna a zero; se não estiver, pega o dado
apontado pelo front, incrementa front em 1 e retorna o dado que foi buscado de queue[front].
DIRETO DO CONCURSO
1. (2014/FAFIPA/UFFS/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO) Acerca dos mo-
delos clássicos de Estruturas de Dados, aquela que define que os primeiros elementos
a serem inseridos são os primeiros elementos a serem removidos (first in, first out) é
classificada como:
a. Vetor.
b. Árvore AVL.
c. Árvore binária.
d. Pilha.
e. Fila.
COMENTÁRIO
A fila é classificada como first in, first out. A pilha é classificada como last in, first out.
COMENTÁRIO
Empilhamento e desempilhamento também são denominados, respectivamente, como en-
queue e dequeue. PUSH e POP são operações da pilha.
GABARITO
1. e
2. E
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
ANOTAÇÕES
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
Árvores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ÁRVORES I
Introdução
Árvore é representada por nós conectados por arestas. O nó é o ponto, enquanto a aresta
são ponteiros que representam outros nós.
Árvore binária é uma estrutura de dados especial usada para fins de armazenamento de
dados. O nó pode ter um filho, dois filhos ou nenhum filho.
Uma árvore binária possui uma condição especial de que cada nó pode ter no máximo
dois filhos (grau 2).
Uma árvore binária possui os benefícios de um vetor ordenado e de uma lista ligada, pois
a pesquisa é tão rápida quanto em um vetor ordenado e as operações de inserção ou exclu-
são são tão rápidas quanto na lista ligada.
5m
Na árvore binária, na medida em que os dados são inseridos, eles continuam ordenados.
Há também a possibilidade da lista ligada, que é mais simples, podendo incrementar ou eli-
minar elementos na lista sem afetar a memória. Todavia, em oposição ao que ocorre em lista
tradicional, não é possível acessar o elemento direito no index.
ANOTAÇÕES
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
Árvores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A estrutura de dados Árvore é uma estrutura que usa ponteiros para representar os nós
filhos, ou seja, trata-se de uma estrutura dinâmica.
A estruturas de dados Árvore não é linear, ou seja, os elementos que as compõem não
estão armazenados de forma sequencial e também não estão todos encadeados como em
uma lista. Note ainda que em uma árvore não existe o conceito de index. Logo, para ter
acesso a um elemento é preciso passar por todos os anteriores.
Em uma estrutura de dados Árvore cada elemento armazena um tipo de dado e ponteiros
para o elemento à esquerda e à direita, o que permite a inserção dos valores na árvore de
forma recursiva.
Características recursivas são interessantes, pois simplifica as operações, mas com um
custo de memória muito alto.
Árvore binária: os elementos menores estão à esquerda e os maiores à direita.
Intuitivamente, a operação na busca binária será mais rápida. E a busca binária em lista
ligada não é possível, pois é preciso percorrer todos os elementos para se chegar ao meio.
10m
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
Árvores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Termos importantes
15m
• Caminho – Caminho refere-se à sequência de nós ao longo das bordas de uma árvore;
• Raiz – O nó na parte superior da árvore é chamado raiz. Existe apenas uma raiz por
árvore e um caminho do nó raiz para qualquer nó;
• Pai – Qualquer nó, exceto o nó raiz, tem uma borda para cima em relação a um nó
chamado pai;
• Filho – O nó abaixo de um determinado nó conectado por sua borda descendente é
chamado de nó filho;
• Folha – O nó que não possui nenhum nó filho é chamado de nó folha;
• Subárvore – Representa os descendentes de um nó;
• Visitar – Refere-se à verificação do valor de um nó quando o controle está no nó;
• Atravessar – Significa passar pelos nós em uma ordem específica;
ANOTAÇÕES
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
Árvores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Quando o número é menor, ele estará à esquerda. E quando o número é maior, ele estará
à direita.
Implementação do Nó em C
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
Árvores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ÁRVORES II
Operações Básicas
As operações básicas que podem ser executadas em uma estrutura de dados da árvore
de pesquisa binária são as seguintes:
Essa operação é um pouco mais complicada. Ao remover um nó, não é como numa lista
ligada, em que, simplesmente, será passado o apontamento do elemento posterior para o ele-
mento anterior. Nesse caso, quando o nó tiver dois filhos, não é possível juntá-los em um só.
Inserção
A primeira inserção cria a árvore. Depois, sempre que um elemento for inserido, localize
primeiro seu local apropriado. Comece a procurar no nó raiz e, se os dados forem menores
que o valor da chave, procure o local vazio na subárvore esquerda e insira o dado. Caso con-
trário, procure o local vazio na subárvore direita e insira o dado.
Estas duas propriedades devem se manter, para que os outros algoritmos continuem fun-
cionando: ter, no máximo, dois filhos por nós e valores menores estão à esquerda e valores
maiores estão à direita.
5m
ANOTAÇÕES
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
Árvores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Busca
Remoção
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
Árvores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
15m
removeraiz (arvore r) {
no *p, *q;
if (r->esq == NULL) {
q = r->dir;
free (r);
return q;
ANOTAÇÕES
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
Árvores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
}
p = r; q = r->esq;
while (q->dir!= NULL) {
p = q; q = q->dir;
}
DIRETO DO CONCURSO
1. (COSEAC/UFF/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2019) Em relação
à estrutura de dados árvore, avalie se são verdadeiras (V) ou falsas (F) as afirmati-
vas a seguir.
I – O número de nível mais alto de uma árvore é conhecido como grau de uma árvore.
II – Quando um nó possui grau zero, diz-se que ele é um nó terminal ou folha.
III – Árvores são estruturas de dados estáticas em que os dados possuem uma ordem
pré-definida, os elementos são dispostos de acordo com uma hierarquia e existe um
nó principal conhecido como raiz.
ANOTAÇÕES
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
Árvores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
Termos importantes
Grau — O número de subárvores de um nó é o grau do nó. O grau da árvore é o maior valor
de grau de nó entre todos os nós da árvore.
I – O número de nível mais alto de uma árvore é conhecido como grau de uma árvore —
Introdução
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
Árvores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Em uma estrutura de dados Árvore cada elemento armazena um tipo de dado e ponteiros
para o elemento à esquerda e à direita, o que permite a inserção dos valores na árvore de
forma recursiva;
III – Árvores são estruturas de dados estáticas em que os dados possuem uma ordem
pré-definida, os elementos são dispostos de acordo com uma hierarquia e existe um nó
principal conhecido como raiz.
20m
GABARITO
1. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
Árvores III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ÁRVORES III
ÁRVORES
Travessia
O travessia é um processo de visitar todos os nós de uma árvore e também pode impri-
mir seus valores.
Como todos os nós são conectados por meio de arestas (links), sempre começamos a
partir do nó raiz (cabeça).
Ou seja, não podemos acessar aleatoriamente um nó em uma árvore.
Existem diversas maneiras que usamos para atravessar uma árvore:
• Em ordem;
• Pré-ordem;
• Pós-ordem;
• Por nível.
Travessia Em Ordem
Nesse método a subárvore esquerda é visitada primeiro, depois a raiz e depois a subár-
vore direita.
Devemos sempre lembrar que cada nó pode representar uma subárvore em si.
Se uma árvore binária de pesquisa for atravessada em ordem, a saída produzirá valores-
-chave classificados em uma ordem crescente.
ANOTAÇÕES
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
Árvores III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
Árvores III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Travessia Em Pré-ordem
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
Árvores III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Travessia em Pós-ordem
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
Árvores III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Em uma árvore binária, o percurso por nível é um percurso denominado “breadth first
search” (BFS) ou em português, busca em largura, a qual seria não recursiva por natureza.
Este percurso utiliza uma fila ao invés de pilha para armazenar os próximos 2 nodos que
devem ser pesquisados (filho à esquerda e à direita).
Exemplo 1
20m
ANOTAÇÕES
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
Árvores III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exemplo 2
DIRETO DO CONCURSO
1. (2009/CESPE/ANAC/TÉCNICO ADMINISTRATIVO – INFORMÁTICA) A travessia em
pré-ordem em árvore binária inicialmente percorre a subárvore à esquerda (em pré-or-
dem), passa pela raiz e finaliza na subárvore à direita (também em pré-ordem).
COMENTÁRIO
Item errado, pois, na pré-ordem, o nó raiz é visitado primeiro, depois a subárvore esquerda
e, finalmente, a subárvore direita.
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
Árvores III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
I – Um percurso em pré-ordem seria: { Ada, Bia, Cris, Lia, Ana, Mel, Rosa, Rita, Val, Sol,
Lua, Lina}
II – Um percurso em ordem simétrica seria: {Val, Sol, Rosa, Rita, Mel, Lua, Lina, Lia, Cris,
Bia, Ana, Ada}
III – Um percurso em nível seria: {Lina, Ana, Lua, Ada, Lia, Sol, Cris, Rita, Val, Bia,
Mel, Rosa}
IV – Um percurso em pós-ordem seria: {Lina, Ana, Ada, Lia, Cris, Bia, Lua, Sol, Rita, Mel,
Rosa, Val}
COMENTÁRIO
Primeiramente, é preciso montar a ordem binária:
25m
ANOTAÇÕES
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
Árvores III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Assim:
GABARITO
1. E
2. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 8
TECNOLOGIA DA INFORMAÇÃO
Árvores IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ÁRVORES IV
ÁRVORES
Árvores AVL
Caso uma árvore binária seja construída a partir de uma lista ordenada teremos algo como:
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
Árvores IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Com dados em tempo real, não podemos prever o padrão de dados e suas frequências.
Portanto, surge a necessidade de balancear as árvores de pesquisa existentes.
Criadas por Adelson-Velsky e Landis, as árvores AVL são uma árvore de pesquisa binária
com balanceamento de altura.
A árvore AVL verifica a altura das subárvores esquerda e direita e garante que a diferença
não seja maior que 1. Essa diferença é chamada de fator de equilíbrio.
Aqui vemos que a primeira árvore está balanceada e as próximas duas não estão
balanceadas:
Rotações AVL
Para se balancear, uma árvore AVL pode executar os quatro tipos de rotações a seguir:
• Rotação esquerda;
• Rotação direita;
• Rotação esquerda-direita;
ANOTAÇÕES
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
Árvores IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Rotação direita-esquerda.
As duas primeiras rotações são rotações simples e as duas rotações seguintes são rota-
ções duplas. Para termos uma árvore desequilibrada, precisamos pelo menos de uma árvore
de altura 2. Com uma árvore simples, vamos estudar uma a uma as rotações.
Rotação Esquerda
Se uma árvore ficar desequilibrada, quando um nó é inserido na subárvore direita da
subárvore direita, realizamos uma única rotação esquerda:
Rotação Direita
A árvore AVL pode ficar desequilibrada, se um nó for inserido na subárvore esquerda da
subárvore esquerda. A árvore precisa de uma rotação.
O nó desequilibrado se torna o filho certo do filho esquerdo executando uma rotação direita:
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
Árvores IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
15m
Rotação Esquerda-Direita
As rotações duplas são uma versão um pouco complexa das versões já explicadas das
rotações. Para entendê-los melhor, devemos tomar nota de cada ação executada durante a
rotação. Vamos primeiro verificar como executar a rotação esquerda-direita.
Uma rotação esquerda-direita é uma combinação de rotação esquerda seguida por rota-
ção direita. Um nó foi inserido na subárvore direita da subárvore esquerda. Isso faz de C um
nó desequilibrado. Esses cenários fazem com que a árvore AVL execute a rotação esquer-
da-direita. Exemplo a seguir.
ANOTAÇÕES
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
Árvores IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Rotação Direita-Esquerda
O segundo tipo de rotação dupla é a rotação direita-esquerda. É uma combinação de
rotação direita seguida de rotação esquerda.

ANOTAÇÕES
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
Árvores IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (2014/IBFC/TRE-AM/ANALISTA JUDICIÁRIO – ANÁLISE DE SISTEMAS) Quanto ao
Algoritmo e estrutura de dados no caso de árvore AVL (ou árvore balanceada pela al-
tura), analise as afirmativas abaixo, dê valores Verdadeiro (V) ou Falso (F) e assinale a
alternativa que apresenta a sequencia correta de cima para baixo:
20m
�( ) Uma árvore AVL é dita balanceada quando, para cada nó da árvore, a diferença
entre as alturas das suas subárvores (direita e esquerda) não é maior do que um.
�( ) Caso a árvore não esteja balanceada é necessário seu balanceamento através da
COMENTÁRIO
A primeira afirmativa é verdadeira, pois a árvore AVL verifica a altura das subárvores es-
querda e direita e garante que a diferença não seja maior que 1.
ANOTAÇÕES
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
Árvores IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A segunda também é verdadeira, pois as duas primeiras rotações são rotações simples e
as duas rotações seguintes são rotações duplas.T
COMENTÁRIO
A inserção do elemento 30 causaria a seguinte reação:
ANOTAÇÕES
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
Árvores IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br

ANOTAÇÕES
www.grancursosonline.com.br 8
TECNOLOGIA DA INFORMAÇÃO
Árvores IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GABARITO
1. d
2. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
TECNOLOGIA DA INFORMAÇÃO
Vetores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
VETORES I
Referências
 Introdução
ANOTAÇÕES
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
Vetores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Introdução
Vetor é um contêiner que pode conter um número fixo de itens e esses itens devem ser
do mesmo tipo (Estrutura de Dados Homogênea).
5m
A maioria das estruturas de dados utiliza vetores para implementar seus algoritmos.
A seguir estão os termos importantes para entender o conceito de vetor:
Representação
Obs.: é importante lembrar que o fato de o índice começar com 1 é algo que varia de uma
linguagem de programação para outra. A maioria das linguagens começa a conta-
gem com o 0, contudo, nos algoritmos, em geral se começa com 1.
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
Vetores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
OPERAÇÕES BÁSICAS
Travessia
15m
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
Vetores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Inserção
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
Vetores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
20m
Exclusão
Exclusão refere-se à remoção de um elemento existente e à reorganização de todos os
elementos remanescentes.

ANOTAÇÕES
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
Vetores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Pesquisa
A pesquisa, dado um array, visa descobrir se um elemento existe em uma dada posição
ou não. O algoritmo abaixo mostra uma pesquisa sequencial:
ANOTAÇÕES
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
Vetores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Atualização
A atualização visa trocar o valor de um elemento.
25m
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
Vetores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (2010/CESPE/BANCO DA AMAZÔNIA/TECNOLOGIA DA INFORMAÇÃO – ANÁLISE
DE SISTEMAS)
www.grancursosonline.com.br 8
TECNOLOGIA DA INFORMAÇÃO
Vetores I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
Item correto, pois o cálculo que será realizado é:.
COMENTÁRIO
Item correto, pois vetor é um contêiner que pode conter um número fixo de itens e esses
itens devem ser do mesmo tipo (Estrutura de Dados Homogênea).
Além disso, Structs, também conhecidas como Registros, definem tipos de dados que
agrupam variáveis sob um mesmo tipo de dado.
30m
A ideia de usar uma struct é permitir que, ao armazenar os dados de uma mesma entidade,
isto possa ser feito com uma única variável.
Por exemplo, se for preciso armazenar a altura, o peso e a idade de uma pessoa, pode-se
criar uma struct chamada Pessoa e agrupar os dados em um único tipo de dado.
Uma vez que armazena vários tipos de dados distintos, é considerada uma Estrutura de
Dados Heterogênea.
GABARITO
1. C
2. C
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
TECNOLOGIA DA INFORMAÇÃO
Vetores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
VETORES II
LISTAS
Referências

ANOTAÇÕES
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
Vetores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Listas Encadeadas
Uma lista encadeada é uma representação de uma sequência de objetos, todos do
mesmo tipo, na memória RAM (random access memory) do computador.
Cada elemento da sequência é armazenado em uma célula da lista: o primeiro elemento
na primeira célula, o segundo na segunda, e assim por diante.
Uma lista encadeada (linked list – lista ligada) é uma sequência de células; cada célula
contém um objeto (todos os objetos são do mesmo tipo) e o endereço da célula seguinte.
Cada célula é um registro que pode ser definido assim:
5m
Obs.: o vetor é bastante útil e tem um acesso aleatório bastante rápido. No entanto, ele
possui uma limitação grave, que é o fato de não ser possível incluir mais elemen-
tos além do que foi determinado no início. A inclusão de mais um elemento em um
array depende, portanto, da alocação de um outro vetor com um tamanho maior e
transferir os valores de um vetor para o outro, isso para cada novo elemento que
se deseja inserir. Isso torna as coisas lentas. Assim, a lista ligada é uma alternativa
para situações em que se deseja a inserção rápida de elementos. Todavia, a lista
ligada apresenta uma desvantagem, pois é muito caro realizar o acesso aleatório a
algum elemento.
Representação
A lista encadeada pode ser visualizada como uma cadeia de nós, onde cada nó aponta
para o próximo nó:
ANOTAÇÕES
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
Vetores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: vale lembrar que, no caso de um vetor, quando se declara uma quantidade grande
de elementos com o intuito de fazer o uso na medida da necessidade, gera-se um
problema, pois o custo de memória inicial será alto. Já em uma lista encadeada é
diferente, pois a alocação da memória ocorre na medida em que os elementos são
inseridos.
Recursividade
Listas são estruturas eminentemente recursivas.
ANOTAÇÕES
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
Vetores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Para tornar isso evidente, basta fazer a seguinte observação: se le é uma lista não vazia
então le->prox também é uma lista.
Muitos algoritmos sobre listas encadeadas ficam mais simples quando escritos em estilo
recursivo.
Exemplo: a seguinte função recursiva imprime o conteúdo de uma lista encadeada le:
15m
Operações Básicas:
• Inserção – Insere um elemento no início da lista;
• Exclusão – Exclui um elemento da lista;
• Imprimir – Exibe a lista completa;
• Pesquisar – Pesquisa um elemento usando a chave fornecida.
ANOTAÇÕES
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
Vetores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Inserção
Obs.: percebe-se que o custo computacional é menor nessa operação de inserção se com-
parado ao custo de um vetor.
Esta função recebe uma lista encadeada le com cabeça e insere na lista uma nova célula
imediatamente antes da primeira que contém y.
Se nenhuma célula contém y, insere a nova célula no fim da lista. O conteúdo da nova
célula é x.
ANOTAÇÕES
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
Vetores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exclusão
20m

Esta função recebe uma lista encadeada le com cabeça e remove da lista a primeira
célula que contiver y, se tal célula existir.
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
Vetores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Pesquisa
ANOTAÇÕES
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
Vetores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (2012/CESPE/BANCO DA AMAZÔNIA CARGO/TÉCNICO CIENTÍFICO – ADMINIS-
TRAÇÃO DE DADOS) As listas duplamente encadeadas diferenciam-se das listas sim-
plesmente encadeadas pelo fato de, na primeira, os nós da lista formarem um anel com
o último elemento ligado ao primeiro da lista.
COMENTÁRIO
Quem faz a ligação entre o primeiro elemento e o último elemento é a lista encadea-
da circular.
COMENTÁRIO
Não há tamanho fixo, pois são permitidas operações de inclusão e exclusão.
25m
www.grancursosonline.com.br 8
TECNOLOGIA DA INFORMAÇÃO
Vetores II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
a) Na realidade, isso acontece na lista encadeada circular.
b) A estrutura de dados é dinâmica.
c) Os elementos estão dispersos na memória física.
d) O disposto no item está correto.
e) Na realidade, na lista ligada ocorre justamente o contrário.
GABARITO
1. E
2. d
3. d
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
Algoritmos de Busca
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ALGORITMOS DE BUSCA
Referências
Introdução
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Algoritmos de Busca
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Imagine ter que encontrar uma palavra em um dicionário que não está organizado. O tra-
balho seria imenso, por isso é importante que as informações estejam organizadas para que
o algoritmo de busca funcione rapidamente.
Certos métodos de organizar dados tornam o processo de busca mais eficiente. Algorit-
mos de ordenação estão relacionados aos algoritmos de busca, pois agilizam o processo de
encontrar as informações necessárias.
Como a operação de busca é uma tarefa muito comum em computação, o conhecimento
de métodos é um passo importante para a formação de um bom programador.
10m
Um algoritmo de busca é aquele que aceita um argumento e tenta encontrar o registro
cuja chave seja este argumento.
É possível que a busca de determinado elemento não tenha sucesso, ou seja, talvez não
exista nenhum registro dentro da tabela com esse argumento como chave.
Nesse caso, o algoritmo pode retornar um “registro nulo”.
Como estamos falando de algoritmos, não estamos falando em implementações específi-
cas em determinada linguagem. Para cada linguagem de programação vai existir uma forma
que será retornada.
15m
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Algoritmos de Busca
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Busca Sequencial em C
Note que a pesquisa sequencial funciona para pesquisas não ordenadas, pois varre o
vetor do início ao fim. Porém seu custo é O(n), porque quanto maior for (n) maior será o
custo, ou seja, o custo é diretamente proporcional ao número de elementos no vetor.
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Algoritmos de Busca
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
No pior caso (caso em que a chave não é encontrada), são necessárias “n” comparações
quando as chaves estão desordenadas.
No caso médio, N/2 comparações se as chaves estiverem ordenadas, pois se para a
busca assim que uma chave maior do que a procurada é encontrada.
20m
Uma vez que o algoritmo percorre a lista e percebe que o elemento que está sendo per-
corrido é maior que o elemento pretendido, já é possível parar a pesquisa.
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Algoritmos de Busca II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ALGORITMOS DE BUSCA II
Em geral, ao se aplicar um algoritmo de busca sobre uma lista não ordenada, o algoritmo
terá problemas na hora de sua execução. É importante lembrar que alguns algoritmos fun-
cionam para listas ordenadas e não ordenadas, mas outros apenas para listas ordenadas.
ATENÇÃO
A busca sequencial funciona tanto para lista ordenada quanto para não ordenada.
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Algoritmos de Busca II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Busca Ordenada
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Algoritmos de Busca II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Isso acontece pois sabemos que determinada chave está ausente numa lista classificada
em ordem ascendente de chaves assim que se encontra uma chave maior que o argumento.
Existe uma tabela auxiliar, chamada tabela de índices, além do próprio arquivo ordenado.
Essa tabela faz o registro dos índices dos registros mais acessados na tabela principal.
Cada elemento na tabela de índices contém uma chave (kindex) e um indicador do regis-
tro no arquivo que corresponde a kindex.
Faz-se a busca a partir do ponto indicado na tabela, sendo que a busca não precisa ser
feita desde o começo.
Pode ser implementada como um vetor ou como uma lista encadeada.
O indicador da posição na tabela pode ser um ponteiro ou uma variável inteira.
Se a tabela for muito grande, pode-se ainda usar a tabela de índices secundária.
O índice secundário é um índice para o índice primário.
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Algoritmos de Busca II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Vantagens:
• Os itens na tabela poderão ser examinados sequencialmente sem que todos os regis-
tros precisem ser acessados;
• O tempo de busca diminui consideravelmente.
Desvantagens:
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Algoritmos de Busca II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (2010/CESPE/Banco da Amazônia/Técnico Científico/Tecnologia da Informação/Admi-
nistração de Dados) A pesquisa sequencial é aplicável em estruturas não ordenadas.
COMENTÁRIO
É necessário lembrar que a pesquisa sequencial pode ser realizada sobre dados não
ordenados.
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Algoritmos de Busca II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
A busca sequencial possui um laço de repetição que tenta identificar o elemento procurado.
Perceba que o algoritmo dado possui dois laços. O algoritmo nem chega a retornar
nada, mas apenas imprime o resultado. Esse é um algoritmo que faz a ordenação e não
uma busca.
Busca Sequencial em C
GABARITO
1. C
2. E
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Algoritmos de Busca III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Busca Binária
O método mais eficiente de pesquisar uma lista ordenada sem usar índice ou tabelas
auxiliares é a busca binária. É interessante notar que a busca binária é realizada em uma
lista ordenada.
Em termos básicos, o argumento é comparado à chave do elemento do meio da tabela.
Se forem iguais, a busca terminará com sucesso. Caso contrário, a metade superior ou a
metade inferior da tabela deverá ser pesquisada de modo semelhante.
A busca binária pode ser definida recursivamente.
Entretanto, é possível que a sobrecarga associada à recursividade a torne inadequada
para uso em situações práticas nas quais a eficiência é uma consideração primordial. Apesar
de a recursividade nos trazer soluções com bastante elegância, ela é pesada computacional-
mente em relação ao gasto de memória.
5m
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Algoritmos de Busca III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br

Uma pesquisa binária que busque o número 47 encontrará o número 14 na primeira cha-
mada. Na segunda chamada, ela encontrará o número 45. Na terceira chamada, ela encon-
trará o número 47.
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Algoritmos de Busca III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
10m
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Algoritmos de Busca III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Tabela de Hash/Espalhamento
É uma estrutura de dados que armazena dados de maneira associativa. Essa estrutura
associa uma chave a um índice.
Em uma tabela de hash, os dados são armazenados em um formato de vetor, em que
cada valor de dados tem seu próprio valor de índice exclusivo.
O acesso aos dados se torna muito rápido se conhecermos o índice dos dados desejados.
Assim, torna-se uma estrutura de dados na qual as operações de inserção e pesquisa
são muito rápidas, independentemente do tamanho dos dados.
A tabela de hash usa um vetor como meio de armazenamento e usa a técnica de hash
para gerar um índice no qual um elemento deve ser inserido ou a partir do qual ele deve ser
localizado.
É necessário entender que o hashing é uma técnica para converter um intervalo de valo-
res-chave em um intervalo de índices de um vetor.
Pode-se usar o módulo operador para obter uma variedade de valores-chave.
Por exemplo, uma tabela de tamanho 20 e os seguintes itens devem ser armazenados,
onde os itens estão no formato chave/valor.
Pra cada chave, há uma função de hashing que devolve um índice.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Algoritmos de Busca III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
20m
As colisões ocorrem quando dois elementos colidem para a mesma posição do vetor.
Existem dois métodos básicos para tratar colisões de espalhamento.
A primeira técnica, chamada reespalhamento, requer o uso de uma função de espalha-
mento secundária sobre a chave de espalhamento do item.
A função de reespalhamento é aplicada sucessivamente até ser encontrada uma posição
vazia onde o item possa ser inserido.
Se a posição de espalhamento do item estiver ocupada durante uma pesquisa, a função
de reespalhamento será usada novamente para achar o item.
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Algoritmos de Busca III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A segunda técnica, chamada encadeamento, forma uma lista ligada de todos os itens
cujas chaves se espalharam nos mesmos valores.
Durante a busca, essa pequena lista ligada é percorrida sequencialmente, procurando a
chave desejada.
Essa técnica requer a inclusão de um campo de ligação adicional em cada posição
da tabela.
Encadeamento
Qualquer função que leva qualquer chave no intervalo 0..M-1 de índices serve como
função de espalhamento.
Mas uma tal função só é eficiente se espalhar as chaves pelo intervalo de índices de
maneira razoavelmente uniforme.
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Algoritmos de Busca III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Por exemplo, se as chaves são números inteiros e todas são múltiplos de 100 (ou seja,
todas terminam com 00) então v % 100 é uma péssima função de espalhamento (causará
muitas colisões).
Uma boa função de espalhamento é essencial para garantir boa performance em tabelas
de espalhamento.
Uma função de espalhamento não adequada para as chaves em questão tende a degra-
dar o desempenho geral da tabela de espalhamento.
Um requisito básico para garantir o bom desempenho da função de espalhamento é que
ela deve prover uma distribuição uniforme dos valores de espalhamento.
Uma distribuição não uniforme tende a aumentar o número de colisões assim como o
custo associado para resolvê-las.
25m
DIRETO DO CONCURSO
1. (2019/IDECAN/IF-PB/Professor/Informática) Basicamente, existem dois métodos de
pesquisa em um vetor de números, a Busca Linear e a Busca Binária. A Busca Binária
é mais eficiente do que a Busca Linear, mas ela só funciona se o vetor estiver ordena-
do. Assinale a alternativa que indique a ordem de complexidade do pior caso da Busca
Binária em um vetor de n números ordenados.
a. O(n)
b. O(n log n)
c. O(log n)
d. O(1)
e. O(n^2)
COMENTÁRIO
Cada comparação na busca binária reduz o número de possíveis candidatos por um fa-
tor de 2. Sendo assim, o número máximo de comparações de chave é aproximadamente
log2n. Sendo assim, podemos afirmar que o algoritmo de busca é O(log n).
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Algoritmos de Busca III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
b. a busca por interpolação é mais adequada quando existe uma distribuição não uni-
forme nas chaves.
c. a busca sequencial possui tempo médio da ordem de log2N (log N na base 2).
d. a pesquisa binária possui uma quantidade máxima de buscas da ordem de N/2.
e. o hashing é considerado tanto um método de busca quanto um método de ordenação.
COMENTÁRIO
A busca binária é o método mais eficiente de pesquisar uma lista ordenada sem usar índice
ou tabelas auxiliares é a busca binária. Em termos básicos, o argumento é comparado à
chave do elemento do meio da tabela. Se forem iguais, a busca terminará com sucesso.
Caso contrário, a metade superior ou a metade inferior da tabela deverá ser pesquisada
de modo semelhante.
Em relação à busca por interpolação, se as chaves estiverem uniformemente distribuídas
dentro da lista, a pesquisa por interpolação pode ser ainda mais eficiente do que a binária.
O algoritmo é o mesmo da pesquisa binária, adotando-se a fórmula abaixo para o cálculo
da variável “meio” (que neste caso não será obrigatoriamente o meio da tabela):
meio = ini + ((fim-ini)*(chave-v[ini])) / (v[fim]-v[ini]).
O número de comparações em uma busca sequencial dependerá de onde o registro com
a chave do argumento aparece na tabela. Se o registro for o primeiro na tabela, só será
efetuada uma comparação. se o registro for o último a tabela, serão necessárias “n” com-
parações. Se for igualmente provável que o argumento apareça em qualquer posição de-
terminada da tabela, uma busca de sucesso exigirá (em média) (n + 1)/2 comparações, e
uma busca sem êxito exigirá “n” comparações. Em qualquer caso, o número de compara-
ções será O(n).
É importante lembrar que cada comparação na busca binária reduz o número de possíveis
candidatos por um fator de 2. Sendo assim, o número máximo de comparações de cha-
ve é aproximadamente log2n. Sendo assim, podemos afirmar que o algoritmo de busca
é O(log n).
A Tabela de Hash ou Espalhamento é uma estrutura de dados que armazena dados de
maneira associativa. Em uma tabela de hash, os dados são armazenados em um formato
de vetor, em que cada valor de dados tem seu próprio valor de índice exclusivo. O acesso
aos dados se torna muito rápido se conhecermos o índice dos dados desejados. Assim,
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
Algoritmos de Busca III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
torna-se uma estrutura de dados na qual as operações de inserção e pesquisa são muito
rápidas, independentemente do tamanho dos dados.
GABARITO
1. c
2. e
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conte-
údo ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura
exclusiva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
Algoritmos de Busca IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ALGORITMOS DE BUSCA IV
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Algoritmos de Busca IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A cada passo, garante-se que nenhuma outra parte da árvore contém a chave
sendo buscada.
O procedimento para quando:
• O nó com v é encontrado;
• Senão, chega-se a NULL.
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Algoritmos de Busca IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Essa busca é um pouco parecida com a busca binária, no entanto existe uma caracte-
rística interessante: inserir elementos na árvore é mais rápido do que inserir em uma lista
ordenada e manter sua ordenação.
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Algoritmos de Busca IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
10m
A remoção de nó com um filho é realizada excluindo o nó pai. Nesse caso, o nó filho sobe
para a posição do pai.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Algoritmos de Busca IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O tempo necessário para pesquisar em uma árvore de busca binária varia entre O(n) e
O(log n), dependendo da estrutura da árvore. Lembre-se de que O(n) é o custo computacio-
nal da busca sequencial, por outro lado, O(log n) é o tempo da busca binária. É importante
notar que a busca pode ser mais ou menos eficiente a depender da estrutura da árvore.
Se os registros forem inseridos em ordem classificada, a árvore resultante conterá todas
as ligações esquerdas (ou direitas) nulas, de modo que a busca da árvore se reduzirá a uma
busca sequencial.
15m
Entretanto, se os registros forem inseridos de modo a ser alcançada uma árvore balan-
ceada, aproximadamente log n comparações serão suficientes para recuperar um elemento.
DIRETO DO CONCURSO
1. (2010/CESPE/BANCO DA AMAZÔNIA/TECNOLOGIA DA INFORMAÇÃO/ANÁLISE DE
SISTEMAS) Em uma árvore binária de busca, como em toda árvore binária, todos os
nós têm grau máximo igual a 2. Entretanto, nem toda árvore binária pode ser conside-
rada uma árvore binária de busca.
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Algoritmos de Busca IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
Uma árvore binária é uma estrutura de dados de árvore na qual cada nó tem no máximo
dois filhos, chamados de filho esquerdo e filho direito.
Árvore Binária de Buscas é construída de tal forma que, para cada nó:
É necessário lembrar que nem toda árvore binária pode ser considerada uma árvore biná-
ria de busca.
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Algoritmos de Busca IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A estrutura de pilha é semelhante a uma pilha de pratos, em que o último elemento inserido
é o primeiro a ser retirado.
Em relação à eficiência das operações de árvore de busca binária, o tempo necessário
para pesquisar em uma árvore de busca binária varia entre 0(n) e O(log n), dependendo
da estrutura da árvore.
Se os registros forem inseridos em ordem classificada, a árvore resultante conterá todas as
ligações esquerdas (ou direitas) nulas, de modo que a busca da árvore se reduzirá a uma
busca sequencial.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Algoritmos de Busca IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Entretanto, se os registros forem inseridos de modo a ser alcançada uma árvore balance-
ada, aproximadamente log n comparações serão suficientes para recuperar um elemento.
GABARITO
1. C
2. c
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conte-
údo ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura
exclusiva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 8
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ALGORITMOS DE ORDENAÇÃO I
Referência
Introdução
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Termos importantes
• Ordem crescente: diz-se que uma sequência de valores está em ordem crescente se
o elemento sucessivo for maior que o anterior. Por exemplo, 1, 3, 4, 6, 8, 9 estão em
ordem crescente, pois cada elemento seguinte é maior que o elemento anterior;
• Ordem decrescente: diz-se que uma sequência de valores está em ordem decres-
cente se o elemento sucessivo for menor que o atual. Por exemplo, 9, 8, 6, 4, 3, 1 estão
em ordem decrescente, pois cada elemento seguinte é menor que o elemento anterior;
• Ordem não crescente: diz-se que uma sequência de valores está em ordem não
crescente, se o elemento sucessivo for menor ou igual ao seu elemento anterior na
sequência. Essa ordem ocorre quando a sequência contém valores duplicados. Por
exemplo, 9, 8, 6, 3, 3, 1 estão em ordem não crescente;
• Ordem não decrescente: diz-se que uma sequência de valores está em ordem não
decrescente se o elemento sucessivo for maior ou igual ao seu elemento anterior na
sequência. Essa ordem ocorre quando a sequência contém valores duplicados. Por
exemplo, 1, 3, 3, 6, 8, 9 estão em ordem não decrescente.
15m
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Esse algoritmo não é adequado para grandes conjuntos de dados, pois sua complexi-
dade média e no pior caso é de Ο(n²) em que n é o número de itens.
Note, no exemplo acima: na lista, 14 < 33, mudando o valor comparativo. No segundo
passo, 33 não é menor do que 27, portanto, faz-se a troca. Em seguida, 27 é menor do que
33, repetindo o valor.
O valor de 33 < 35, o que está ordenado. No caos de 35 por 10, é preciso realizar a troca,
mantendo o 35.
Por seu turno, nos quadrados verdes, os valores estão flutuando, começando desordena-
dos e partindo para as suas posições, flutuando.
Implementação do algoritmo:
20m
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A classificação de bolha tem uma complexidade média, no pior dos casos, de О(n2 ), em
que n é o número de itens que estão sendo classificados.
Os algoritmos de classificação mais práticos têm uma complexidade média ou pior, subs-
tancialmente melhor, geralmente O(n log n);
Mesmo outros algoritmos de classificação О (n²), como a classificação por inserção geral-
mente são mais rápidos que a classificação por bolhas e não são mais complexos;
Portanto, a classificação por bolhas não é um algoritmo de classificação prático.
A única vantagem significativa que a classificação de bolhas tem sobre a maioria dos
outros algoritmos, mesmo o quick sort, mas não a inserção, é a capacidade de detectar se a
lista é classificada com eficiência é incorporada ao algoritmo.
Quando a lista já está classificada (melhor caso), a complexidade da classificação de
bolhas é apenas O(n).
Por outro lado, a maioria dos outros algoritmos, mesmo aqueles com melhor complexi-
dade de caso médio, executam todo o processo de classificação no conjunto e, portanto, são
mais complexos;
No entanto, a classificação por inserção não apenas compartilha essa vantagem, mas
também apresenta um desempenho melhor.
A classificação de bolhas deve ser evitada no caso de grandes coleções.
Não será eficiente no caso de uma coleção com ordem inversa;
DIRETO DO CONCURSO
1. (CESGRANRIO/TRANSPETRO/ANALISTA DE SISTEMAS JÚNIOR/2011) O algoritmo
Bubble Sort é popular, mesmo que ineficiente. Usando-se esse algoritmo para ordenar
uma tabela, alocada sequencialmente, em ordem crescente contendo os números [5, 4,
1, 3, 2] serão feitas:
a. 10 comparações e 8 trocas
b. 10 comparações e 9 trocas
c. 10 comparações e 10 trocas
d. 16 comparações e 9 trocas
e. 16 comparações e 10 trocas
ANOTAÇÕES
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
25m COMENTÁRIO
Abaixo, a cada traço amarelo (com conjunto de números) há uma troca, apresentando o C
como comparação e o T como troca.
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação I
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
Bubble Sort – Desempenho
A classificação de bolha tem uma complexidade média, no pior dos casos, de О(n²), em
que n é o número de itens que estão sendo classificados.
Os algoritmos de classificação mais práticos têm uma complexidade média ou pior, subs-
tancialmente melhor, geralmente O (n log n).
Mesmo outros algoritmos de classificação О (n²), como a classificação por inserção, geral-
mente são mais rápidos que a classificação por bolhas e não são mais complexos. Portan-
to, a classificação por bolhas não é um algoritmo de classificação prático;
GABARITO
1. a
2. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 8
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ALGORITMOS DE ORDENAÇÃO II
ALGORITMOS DE ORDENAÇÃO
São métodos para organizar coisas. Ex.: métodos para organizar as cartas de um baralho
bagunçado. Cada uma das maneiras de organizar as cartas é um algoritmo diferente.
Funcionamento
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
5m
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Algoritmo
FUNÇÃO INSERTION_SORT (A[], tamanho)
VARIÁVEIS i, j, eleito
PARA i <- 1 ATÉ (tamanho-1) FAÇA
eleito <- A[i];
j <- i-1;
ENQUANTO ((j>=0) E (eleito < A[j])) FAÇA
A[j+1]:= A[j];
j:=j-1;
FIM_ENQUANTO
A[j+1] <- eleito;
FIM_PARA
FIM
Implementação em C
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
Ordenação por Inserção
À medida que a sub-lista ordenada anda em direção à direita, ela captura cada elemento
e o coloca na posição correta da lista. Esse é o principal conceito que você deve entender.
10m
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Esse algoritmo não é adequado para grandes conjuntos de dados, pois suas complexida-
des média e pior dos casos é de Ο(n²), onde n é o número de itens;
Funcionamento
Perceba que essa lista cresce em direção à direita, até tomar conta de todo o vetor, no
entanto, sem modificação. Ou seja, ela aumenta da esquerda para a direita, selecionando o
menor elemento que esteja à direita.
A Insertion Sort pegava o próximo elemento e o inseria na posição correta. O Selection
Sort seleciona o menor elemento na sub-lista desordenada e o coloca como o maior ele-
mento da sub-lista ordenada.
ANOTAÇÕES
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Implementação em C
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. CESGRANRIO/PETROBRAS/ANALISTA DE SISTEMAS JÚNIOR/PROCESSOS DE
NEGÓCIO/2018) Um programador construiu uma função para ordenar vetores de intei-
ros por meio do algoritmo de ordenação por inserção (insertion sort). A versão iterativa
desse algoritmo possui dois loops aninhados. Suponha que esse programador tenha
inserido, imediatamente antes do incremento da variável de controle do loop mais exter-
no, uma chamada de uma função para percorrer e exibir o conteúdo do vetor que está
sendo ordenado. O trecho de código a seguir ilustra como essa chamada é feita.
for (int i = 1; i < vetor.length; i++){
/* Os demais comandos que implementam o algoritmo de ordenação por inserção de-
vem substituir essas linhas com comentários
*/
exibeVetor(vetor);
}
A Figura abaixo exibe o vetor que foi passado como parâmetro em uma chamada da
função de ordenação.
78 12 35 1 17 4 43 11 17 1
COMENTÁRIO
i=0 78 12 35 1 17 4 43 11 17 1
i=1 12 78 35 1 17 4 43 11 17 1
i=2 12 35 78 1 17 4 43 11 17 1
ANOTAÇÕES
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
i=3 1 12 35 78 17 4 43 11 17 1
20m
COMENTÁRIO
Implementação em C
void selection_sort(int num[], int tam) {
int i, j, min, aux;
for (i = 0; i < (tam-1); i++) {
min = i;
for (j = (i+1); j < tam; j++) {
if(num[j] < num[min])
min = j;
}
ANOTAÇÕES
www.grancursosonline.com.br 8
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
if (num[i]!= num[min]) {
aux = num[i];
num[i] = num[min];
num[min] = aux;
}
}
}
COMENTÁRIO
Por alguma razão desconhecida, a banca começou a fazer a ordenação da direita para
esquerda (do fim para o começo), o que não é muito comum nesse algoritmo.
P0 (15,11,16,18,23,5,10,22,21,12)
P1 (15,11,16,18,12,5,10,22,21,23)
P2 (15,11,16,18,12,5,10,21,22,23)
P3 (15,11,16,18,12,5,10,21,22,23)
P4 (15,11,16,10,12,5,18,21,22,23)
P5 (15,11,5,10,12,16,18,21,22,23)
GABARITO
1. d
2. a
3. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
www.grancursosonline.com.br 9
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Funcionamento
A lista é dividida no meio. Em seguida, cada uma das sub-listas é dividida no meio, até
chegar aos elementos.
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Cada uma das listas que representa os elementos atômicos é uma lista ordenada.
5m
Imagine que há duas listas de números ou duas pilhas de cartas ordenadas (viradas para
cima). Como gerar uma pilha única das duas ordenadas? Por meio da intercalação: você
deve pegar as duas pilhas de maneira ordenada. Nesse caso, a terceira pilha também estará
ordenada. Para que isso dê certo, as duas pilhas devem estar ordenadas.
Algoritmo
01. mergesort(A[0...n - 1], inicio, fim)
02. | se(inicio < fim)
03. | | meio ← (inicio + fim) / 2 //calcula o meio
04. | | mergesort(A, inicio, meio) //ordena o subvetor esquerdo 05. | | mergesort(A, meio +
1, fim) //ordena o subvetor direito
06. | | merge(A, inicio, meio, fim) //funde os subvetores esquerdo e direito
07. | fim_se
08. fim_mergesort
Além disso, observe:
01. merge(A[0...n - 1], inicio, meio, fim)
02. | tamEsq ← meio - inicio + 1 //tamanho do subvetor esquerdo
03. | tamDir ← fim - meio //tamanho do subvetor direito 04. | inicializar vetor Esq[0...
tamEsq - 1] 05. | inicializar vetor Dir[0...tamDir - 1]
ANOTAÇÕES
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Implementação em C
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
comAux++;
com2++;
}
// Move os elementos de volta para o vetor original
for(comAux = comeco; comAux <= fim; comAux++){
vetor[comAux] = vetAux[comAux-comeco];
}
free(vetAux);
}
Essa ordenação não é considera in-place, isto é, para conseguir fazer a ordenação, é
preciso mais memória.
O Merge Sort é mais performático, porém gasta mais memória. Além disso, a recursivi-
dade também causa grande consumo de memória.
Ordenação Shell
É um algoritmo de classificação altamente eficiente e baseia-se no algoritmo de classi-
ficação de inserção. Esse algoritmo evita grandes mudanças, como no caso da inserção,
se o valor menor estiver na extrema direita e precisar ser movido para a extrema esquerda.
Ocorre que ele usa a ordenação por inserção em elementos amplamente espaçados, pri-
meiro para classificá-los e depois classifica os elementos menos espaçados. Ademais, ele é
bastante eficiente para conjuntos de dados de tamanho médio, pois sua complexidade média
e o pior dos casos depende da sequência de intervalos:
ANOTAÇÕES
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O(N1.2) para a sequência 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023;
O(N(log2N)²) para a sequência 1, 2, 3, 4, 6, 9, 8, 12, 18, 27, 16, 24, 36, 54, 81.
15m
Essa ordenação não tem um custo O(N) bem definido. No caso da Shell Sort, o seu custo
não é bem definido, o qual depende da característica da lista. O custo pode ser muito alto
ou muito baixo. Nesse contexto, essa ordenação pode não ser muito interessante em alguns
casos, pois, se seu custo varia tanto, não se sabe quanto tempo ela durará exatamente.
VANTAGENS E DESVANTAGENS
Vantagens:
• Shell sort é uma ótima opção para arquivos de tamanho moderado;
• Sua implementação é simples e requer uma quantidade de código pequena.
Desvantagens:
• O tempo de execução do algoritmo é sensível à ordem inicial do arquivo;
• O método não é estável.
Funcionamento
Intervalo de 4
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Intervalo de 1
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Implementação em C
DIRETO DO CONCURSO
1 (CCV-UFC/UFC/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2019) Para realizar a
ordenação de um vetor de inteiros contendo n números, foi utilizado um algoritmo de ordena-
ção baseado na estratégia de dividir para conquistar e na divisão e ordenação recursiva das
partes do vetor, obtendo um tempo de execução O(n log n). Qual das opções abaixo contém
20m
o algoritmo de ordenação descrito?
a) Shell Sort
b) Quick Sort
c) Merge Sort
d) Bucket Sort
e) Insertion Sort
COMENTÁRIO
Existem vários métodos que são do tipo “dividir para conquistar”, no entanto, o mais emble-
mático é o algoritmo de Merge Sort.
• A ordenação por intercalação é uma técnica de classificação baseada na técnica de
dividir e conquistar;
ANOTAÇÕES
www.grancursosonline.com.br 8
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
a) Merge sort
b) Insertion sort
c) Bubble sort
d) Quick sort
e) Selection sort
COMENTÁRIO
O insertion sort, o bubble sort e o selection sort são bem parecidos; eles possuem custos
muito parecidos: O(N²)
Uma característica do Merge Sort é a seguinte:
• A pior complexidade do tempo sendo (n log n).
GABARITO
1. c
2. a
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ALGORITMOS DE ORDENAÇÃO IV
QUICKSORT
Algoritmo
Obs.: percebe-se que ocorre chamada recursiva. Há, ainda, custo de memória adicional.
ANOTAÇÕES
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Implementação em C
Obs.: o Quicksort é um algoritmo rápido e muito eficiente, sendo utilizado em casos reais.
HEAPSORT
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Heap Binário
10m
Inicialmente, é necessário definir uma árvore binária completa. Uma árvore binária com-
pleta é uma árvore binária na qual todos os níveis, exceto possivelmente o último, são com-
pletamente preenchidos e todos os nós ficam o mais à esquerda possível.
Um Heap Binário é uma Árvore Binária Completa, na qual os itens são armazenados em
uma ordem especial, de forma que o valor em um nó pai seja maior (ou menor) que os valo-
res em seus dois nós filhos.
O primeiro é chamado como heap máximo e o último é chamado heap mínimo. O heap
pode ser representado por árvore ou vetor binário. Como uma pilha binária é uma árvore
binária completa, ela pode ser facilmente representada, pois o vetor e a representação base-
ada em vetores são eficientes em termos de espaço.
Se o nó pai estiver armazenado no índice I, o filho esquerdo poderá ser calculado em 2 *
I + 1 e o filho direito em 2 * I + 2 (assumindo que a indexação comece em 0).
COMPLEXIDADE
Complexidade O(n log n) no pior e médio caso. Mesmo tendo a mesma complexidade no
caso médio que o QuickSort, o HeapSort acaba sendo mais lento que algumas boas imple-
mentações do QuickSort. Porém, além de ser mais rápido no pior caso que o QuickSort,
necessita de menos memória para executar.
QuickSort necessita de um vetor O(log n) para guardar as estruturas enquanto o Heap-
Sort não necessita de um vetor auxiliar.
ANOTAÇÕES
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Algoritmo
• Dado um vetor V de n elementos, transformar o vetor em um heap;
• Pegar a posição V[1] (ou seja, o maior elemento) e trocar de posição com V[max];
• Repetir o processo com um array formado pelos elementos V[1],..., V[n-1].
Implementação em C
15m
DIRETO DO CONCURSO
1. (2011/CESGRANRIO/PETROBRAS/ANALISTA DE SISTEMAS JÚNIOR – ENGENHA-
RIA DE SOFTWARE) A ordenação é um problema muito importante para os desen-
volvedores de software. Para implementá-la, existem vários algoritmos que já foram
amplamente estudados, como o BubbleSort, o QuickSort e o MergeSort. Uma das ca-
racterísticas estudadas desses algoritmos é o tempo de execução, que, usualmente, é
medido através da notação O (Big-Oh). Sobre esses conceitos, considere as afirmati-
vas abaixo.
ANOTAÇÕES
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
I – O tempo de pior caso do algoritmo QuickSort é de ordem menor que o tempo médio
do algoritmo Bubblesort.
II – O tempo médio do QuickSort é O(n log2n), pois ele usa como estrutura básica uma
árvore de prioridades.
III – O tempo médio do QuickSort é de ordem igual ao tempo médio do MergeSort.
COMENTÁRIO
Para responder essa questão é importante observar a seguinte tabela comparativa:

ANOTAÇÕES
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
II – ( ) Neste método, são usados, inicialmente, os elementos da lista que são inseridos
em um heap binário crescente. Em seguida, são feitas sucessivas remoções do menor
elemento do heap, colocando os elementos removidos do heap de volta na lista.
III – ( ) Neste método, a lista é dividida em duas metades. Essas metades são ordenadas
recursivamente e depois são intercaladas. Para tanto, faz-se uso das variáveis i e j
para percorrer a metade esquerda e a metade direita, respectivamente. Em cada ite-
ração, compara-se o elemento na posição i com o elemento na posição j. O menor
deles é copiado para um vetor auxiliar. Esse procedimento é repetido até que uma
das duas metades tenha sido totalmente copiada para o vetor auxiliar.
IV – ( ) Neste método, os elementos da lista são movidos para as posições adequadas
de forma contínua. Se um elemento está inicialmente numa posição i e, para que a
lista fique ordenada, ele deve ocupar a posição j, então ele terá que passar por todas
as posições entre i e j. Em cada iteração do método, percorre-se a lista a partir de
seu início, comparando cada elemento com seu sucessor, trocando-os de posição se
houver necessidade.
V – ( ) Neste método, a lista é dividida em parte esquerda e parte direita, sendo que
os elementos da parte esquerda são todos menores do que os elementos da parte
direita. Em seguida, as duas partes são ordenadas recursivamente.
VI – ( ) Neste método, considera-se que a lista está dividida em parte esquerda, já orde-
nada, e parte direita, em possível desordem. Além disso, os elementos da parte
esquerda são todos menores ou iguais aos elementos da parte direita. Cada iteração
consiste em escolher o menor elemento da parte direita (pivô) e trocá-lo com o pri-
meiro elemento da parte direita. Com isso, a parte esquerda aumenta, pois passa a
incluir o pivô, e a parte direita diminui.
VII – ( ) Neste método, considera-se que a lista está dividida em parte esquerda, já orde-
nada, e parte direita, em possível desordem. Inicialmente, a parte esquerda contém
apenas o primeiro elemento da lista. Cada iteração consiste em colocar o primeiro
elemento da parte direita (pivô) na posição adequada da parte esquerda, de modo
que a parte esquerda continue ordenada.
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
Algoritmos de Ordenação IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
I – Shellsort.
II – Heapsort.
III – Mergesort.
IV – Bubblesort.
V – Quicksort.
VI – Selectsort.
VII – Insertsort.
GABARITO
1. c
2. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 8