Escolar Documentos
Profissional Documentos
Cultura Documentos
2 Ordenação
Introdução
Algoritmo bubble sort
Algoritmo selection sort
Algoritmo insertion sort
3 Algoritmos de busca
Busca sequencial ou linear
Próximo Tópico
2 Ordenação
Introdução
Algoritmo bubble sort
Algoritmo selection sort
Algoritmo insertion sort
3 Algoritmos de busca
Busca sequencial ou linear
Motivação
Em programação, podemos resolver um problema de várias maneiras.
Algoritmos diferentes, não necessariamente resolvem o problema com a
mesma eficiência. Para comparar a eficiência de algoritmos foi criada
uma métrica chamada complexidade computacional.
Motivação
Em programação, podemos resolver um problema de várias maneiras.
Algoritmos diferentes, não necessariamente resolvem o problema com a
mesma eficiência. Para comparar a eficiência de algoritmos foi criada
uma métrica chamada complexidade computacional.
Motivação
Em programação, podemos resolver um problema de várias maneiras.
Algoritmos diferentes, não necessariamente resolvem o problema com a
mesma eficiência. Para comparar a eficiência de algoritmos foi criada
uma métrica chamada complexidade computacional.
Motivação
Em programação, podemos resolver um problema de várias maneiras.
Algoritmos diferentes, não necessariamente resolvem o problema com a
mesma eficiência. Para comparar a eficiência de algoritmos foi criada
uma métrica chamada complexidade computacional.
Análise empírica
Comparação entre programas, analisado pela execução do programa.
Análise empírica
Comparação entre programas, analisado pela execução do programa.
Análise empírica
Comparação entre programas, analisado pela execução do programa.
Análise empírica
Comparação entre programas, analisado pela execução do programa.
Análise empírica
Comparação entre programas, analisado pela execução do programa.
Análise empírica
Comparação entre programas, analisado pela execução do programa.
Análise empírica
Comparação entre programas, analisado pela execução do programa.
Análise empírica
Comparação entre programas, analisado pela execução do programa.
Análise empírica
Comparação entre programas, analisado pela execução do programa.
Análise matemática
Cálculo do tempo gasto independente da linguagem ou hardware, mas
sim uma análise matemática formal em um computador idealizado e
simplificações.
Análise matemática
Cálculo do tempo gasto independente da linguagem ou hardware, mas
sim uma análise matemática formal em um computador idealizado e
simplificações.
Análise matemática
Cálculo do tempo gasto independente da linguagem ou hardware, mas
sim uma análise matemática formal em um computador idealizado e
simplificações.
Grande-ômega Ω(n)
Analisa o melhor caso de um algoritmo.
Grande-ômega Ω(n)
Analisa o melhor caso de um algoritmo.
Grande-theta Θ(n)
Limite assintótico firme. Significa que existe números positivos c e d
tais que c · g(n) ≤ f (n) ≤ d · g(n) para todo n suficientemente grande.
Grande-ômega Ω(n)
Analisa o melhor caso de um algoritmo.
Grande-theta Θ(n)
Limite assintótico firme. Significa que existe números positivos c e d
tais que c · g(n) ≤ f (n) ≤ d · g(n) para todo n suficientemente grande.
2 Ordenação
Introdução
Algoritmo bubble sort
Algoritmo selection sort
Algoritmo insertion sort
3 Algoritmos de busca
Busca sequencial ou linear
O(n!)
Operações
O(n log n)
O(n)
O(log n) O(1)
Elementos
2 Ordenação
Introdução
Algoritmo bubble sort
Algoritmo selection sort
Algoritmo insertion sort
3 Algoritmos de busca
Busca sequencial ou linear
Definição
Ordenar é o processo de rearranjar objetos, coisas, dados, etc. de
acordo com algumas características, em determinada ordem, para
posterior recuperação de forma rápida e eficiente.
Definição
Ordenar é o processo de rearranjar objetos, coisas, dados, etc. de
acordo com algumas características, em determinada ordem, para
posterior recuperação de forma rápida e eficiente.
Chave de ordenação
É o campo do item utilizado para comparação. É por meio dele que
sabemos se determinado elemento está à frente ou não de outros no
conjunto ordenado.
Classificação interna
O processo de classificação de dados contidos inteiramente na
memória principal é denominado classificação interna.
Classificação interna
O processo de classificação de dados contidos inteiramente na
memória principal é denominado classificação interna.
Classificação externa
O processo de classificação de dados que não cabe inteiramente na
memória principal e que, portanto, os dados estão contidos em
memória secundária é denominado classificação externa.
Classificação interna
O processo de classificação de dados contidos inteiramente na
memória principal é denominado classificação interna.
Classificação externa
O processo de classificação de dados que não cabe inteiramente na
memória principal e que, portanto, os dados estão contidos em
memória secundária é denominado classificação externa.
Algoritmo estável
A ordem dos elementos com chaves iguais não muda durante a
ordenação.
2 Ordenação
Introdução
Algoritmo bubble sort
Algoritmo selection sort
Algoritmo insertion sort
3 Algoritmos de busca
Busca sequencial ou linear
O que é?
É um método de classificação caracterizado por efetuar ordenação
comparando sucessivamente pares de elementos e mudando-os de
posição quando se apresentam fora da ordem desejada.
x 23 4 67 -8 21 x
x 23 4 67 -8 21 x
1ª iteração do do-while x
i=0 23 4 67 -8 21 V[i] > V[i+1]: Trocar
x 23 4 67 -8 21 x
1ª iteração do do-while x
i=0 23 4 67 -8 21 V[i] > V[i+1]: Trocar
x 23 4 67 -8 21 x
1ª iteração do do-while x
i=0 23 4 67 -8 21 V[i] > V[i+1]: Trocar
x 23 4 67 -8 21 x
1ª iteração do do-while x
i=0 23 4 67 -8 21 V[i] > V[i+1]: Trocar
x 23 4 67 -8 21 x
1ª iteração do do-while x
i=0 23 4 67 -8 21 V[i] > V[i+1]: Trocar
Final 4 23 -8 21 67 x
2ª iteração do do-while x
i=0 4 23 -8 21 67 V[i] < V[i+1]: Manter
2ª iteração do do-while x
i=0 4 23 -8 21 67 V[i] < V[i+1]: Manter
2ª iteração do do-while x
i=0 4 23 -8 21 67 V[i] < V[i+1]: Manter
2ª iteração do do-while x
i=0 4 23 -8 21 67 V[i] < V[i+1]: Manter
Final 4 -8 21 23 67 x
3ª iteração do do-while
i=0 4 -8 21 23 67 V[i] > V[i+1]: Trocar
3ª iteração do do-while
i=0 4 -8 21 23 67 V[i] > V[i+1]: Trocar
3ª iteração do do-while
i=0 4 -8 21 23 67 V[i] > V[i+1]: Trocar
Final -8 4 21 23 67 x
4ª iteração do do-while
i=0 -8 4 21 23 67 V[i] < V[i+1]: Manter
4ª iteração do do-while
i=0 -8 4 21 23 67 V[i] < V[i+1]: Manter
Ordenado -8 4 21 23 67 x
Eficiência
Infelizmente, não é um algoritmo eficiente, sendo estudado apenas
para fins de desenvolvimento de raciocínio.
Eficiência
Infelizmente, não é um algoritmo eficiente, sendo estudado apenas
para fins de desenvolvimento de raciocínio.
Complexidade
O(n): melhor caso, elementos já ordenados.
O(n2 ): pior caso, elementos na ordem inversa.
O(n2 ): caso médio.
2 Ordenação
Introdução
Algoritmo bubble sort
Algoritmo selection sort
Algoritmo insertion sort
3 Algoritmos de busca
Busca sequencial ou linear
O que é?
É um algoritmo de ordenação onde para cada elemento do vetor é feita
uma varredura das demais posições e seleciona-se o melhor
elemento para ocupar aquela posição do array. Na prática possui um
desempenho quase sempre superior ao bubble sort.
Funcionamento
• Divide-se o array em duas partes. Ordenada à esquerda e não
ordenada à direita.
Funcionamento
• Divide-se o array em duas partes. Ordenada à esquerda e não
ordenada à direita.
• Para cada elemento do array, começando do primeiro, o algoritmo
procura na parte não ordenada o menor valor e troca os dois
valores de lugar.
Funcionamento
• Divide-se o array em duas partes. Ordenada à esquerda e não
ordenada à direita.
• Para cada elemento do array, começando do primeiro, o algoritmo
procura na parte não ordenada o menor valor e troca os dois
valores de lugar.
• Em seguida o algoritmo avança para a próxima posição do array e
esse processo é feito até que todo o array esteja ordenado.
Inicial 23 4 67 -8 21 x
Inicial 23 4 67 -8 21 x
Inicial 23 4 67 -8 21 x
Inicial 23 4 67 -8 21 x
Inicial 23 4 67 -8 21 x
x -8 4 67 23 21 x
Inicial 23 4 67 -8 21 x
x -8 4 67 23 21 x
Inicial 23 4 67 -8 21 x
x -8 4 67 23 21 x
x -8 4 21 23 67 x
x -8 4 21 23 67 x
Ordenado -8 4 21 23 67 x
Eficiência
Não é um algoritmo eficiente, já que sua eficiência diminui
drasticamente à medida que o número de elementos do array aumenta.
Não é recomendado para aplicações que envolvam grandes
quantidades de dados ou velocidade.
Eficiência
Não é um algoritmo eficiente, já que sua eficiência diminui
drasticamente à medida que o número de elementos do array aumenta.
Não é recomendado para aplicações que envolvam grandes
quantidades de dados ou velocidade.
Complexidade
O(n2 ): Independe da ordem inicial dos elementos.
Eficiência
Não é um algoritmo eficiente, já que sua eficiência diminui
drasticamente à medida que o número de elementos do array aumenta.
Não é recomendado para aplicações que envolvam grandes
quantidades de dados ou velocidade.
Complexidade
O(n2 ): Independe da ordem inicial dos elementos.
2 Ordenação
Introdução
Algoritmo bubble sort
Algoritmo selection sort
Algoritmo insertion sort
3 Algoritmos de busca
Busca sequencial ou linear
♣♣ ♣
7
♣
♣♣
5♣ ♣
♣♣ ♣
10
4 ♣♣
2 ♣
♣ ♣♣ ♣
♣
♣
♣
♣ ♣
7
♣ ♣♣ ♣
♣
♣
5♣4 2♣
♣♣♣
♣♣
0
♣
1
O que é?
Assemelha-se ao processo de ordenação de um conjunto de cartas de
baralho. Pega-se uma carta de cada vez e a insere em seu devido lugar,
deixando as cartas da mão em ordem.
O que é?
Assemelha-se ao processo de ordenação de um conjunto de cartas de
baralho. Pega-se uma carta de cada vez e a insere em seu devido lugar,
deixando as cartas da mão em ordem.
Funcionamento
• Percorre-se um array e, para cada posição X, verifica se o seu valor
está na posição correta.
Funcionamento
• Percorre-se um array e, para cada posição X, verifica se o seu valor
está na posição correta.
• Anda-se para o começo do array a partir da posição X.
Funcionamento
• Percorre-se um array e, para cada posição X, verifica se o seu valor
está na posição correta.
• Anda-se para o começo do array a partir da posição X.
• Movimenta-se uma posição para frente os valores que são maiores
do que o valor da sua posição X.
Funcionamento
• Percorre-se um array e, para cada posição X, verifica se o seu valor
está na posição correta.
• Anda-se para o começo do array a partir da posição X.
• Movimenta-se uma posição para frente os valores que são maiores
do que o valor da sua posição X.
• Tem-se então uma posição livre para inserir o valor da posição X
em seu devido lugar.
Ordenado -8 4 21 23 67 x
1 2 3 4 5 6
2 5 4 6 1 3
1 2 3 4 5 6
2 5 4 6 1 3
1 2 3 4 5 6
2 4 5 6 1 3
1 2 3 4 5 6
2 5 4 6 1 3
1 2 3 4 5 6
2 4 5 6 1 3
1 2 3 4 5 6
2 4 5 6 1 3
1 2 3 4 5 6
2 5 4 6 1 3
1 2 3 4 5 6
2 4 5 6 1 3
1 2 3 4 5 6
2 4 5 6 1 3
1 2 3 4 5 6
1 2 4 5 6 3
1 2 3 4 5 6
2 5 4 6 1 3
1 2 3 4 5 6
2 4 5 6 1 3
1 2 3 4 5 6
2 4 5 6 1 3
1 2 3 4 5 6
1 2 4 5 6 3
1 2 3 4 5 6
1 2 3 4 5 6
Complexidade
• O(n): Melhor caso, elementos já ordenados.
• O(n2 ): Pior caso, elementos na ordem inversa.
• O(n2 ): Caso médio.
Complexidade
• O(n): Melhor caso, elementos já ordenados.
• O(n2 ): Pior caso, elementos na ordem inversa.
• O(n2 ): Caso médio.
Vantagens
Estável: a ordem dos elementos iguais não muda durante a ordenação.
On-line: pode-se ordenar os elementos à medida que os recebe.
2 Ordenação
Introdução
Algoritmo bubble sort
Algoritmo selection sort
Algoritmo insertion sort
3 Algoritmos de busca
Busca sequencial ou linear
O que é?
Visa responder se determinado valor está ou não presente em um
conjunto de elementos.
O que é?
Visa responder se determinado valor está ou não presente em um
conjunto de elementos.
Chave de busca
A chave de busca é o campo do item utilizado para comparação. É por
meio dessa chave que sabemos se dado elemento é o que buscamos.
O que é?
A busca sequencial ou linear é a estratégia mais simples de busca que
existe. Percorre-se todas as posições do array até encontrar o
elemento. Caso não o encontre retorna-se um alerta informando a não
existência do elemento.
23 4 67 -8 54 90 21
Atenção!
Procurar determinado elemento em um array desordenado é uma
tarefa bastante cara.
Complexidade
• O(1): melhor caso, o elemento é o primeiro do array.
• O(n): pior caso, o elemento é o último ou não existe.
• O(n/2): caso médio.
O que é?
A busca sequencial ordenada assume que os dados estão ordenados.
O que é?
A busca sequencial ordenada assume que os dados estão ordenados.
Vantagem
Se o elemento procurado for menor do que o valor em determinada
posição do array, temos a certeza de que ele não estará no restante do
array. Isso evita a necessidade de percorrer o array do início até o seu
fim.
O que é?
A busca sequencial ordenada assume que os dados estão ordenados.
Vantagem
Se o elemento procurado for menor do que o valor em determinada
posição do array, temos a certeza de que ele não estará no restante do
array. Isso evita a necessidade de percorrer o array do início até o seu
fim.
Desvantagem
Ordenar um array também tem o seu custo. Este custo é superior ao
custo da busca sequencial em seu pior caso.
-8 4 21 23 54 67 90