Buscar

Slides Estrutura de Dados Aula 04

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Estrutura de Dados
Aula 04
Orlei José Pombeiro
Organização da Aula
� Nesta aula vamos praticar 
técnicas de ordenação e pesquisa:
• Ordenação por Inserção
• Ordenação por Seleção
• Pesquisa Sequencial
• Pesquisa Binária
FIM
Vídeo 1 – conversa inicial
Contextualização
Ordenação e Pesquisa
Vídeo 2 – Contextualização
Contextualização
8 16 34 13 19 7 45 3 12 9
• Ordenação
• Pesquisa Sequencial
• Pesquisa Binária
FIM
Ordenação por Inserção
Loop Troca 1º 2º 3º 4º 5º 6º 7º 8º 9º 10º
Vetor Inicial 8 16 34 13 19 7 45 3 12 9
1º 1º -> 6º 7 16 34 13 19 8 45 3 12 9
1º 1º -> 8º 3 16 34 13 19 8 45 7 12 9
2º 2º -> 4º 3 13 34 16 19 8 45 7 12 9
2º 2º -> 7º 3 8 34 16 19 13 45 7 12 9
2º 2º -> 8º 3 7 34 16 19 13 45 8 12 9
3º 3º -> 4º 3 7 16 34 19 13 45 8 12 9
3º 3º -> 6º 3 7 13 34 19 16 45 8 12 9
3º 3º -> 8º 3 7 8 34 19 16 45 13 12 9
Vídeo 3 – Tema 1
Ordenação por Inserção
Loop Troca 1º 2º 3º 4º 5º 6º 7º 8º 9º 10º
Vetor Inicial 8 16 34 13 19 7 45 3 12 9
4º 4º -> 5º 3 7 8 19 34 16 45 13 12 9
4º 4º -> 6º 3 7 8 16 34 19 45 13 12 9
4º 4º -> 8º 3 7 8 13 34 19 45 16 12 9
4º 4º -> 9º 3 7 8 12 34 19 45 16 13 9
4º 4º -> 10º 3 7 8 9 34 19 45 16 13 12
5º 5º -> 6º 3 7 8 9 19 34 45 16 13 12
5º 5º -> 8º 3 7 8 9 16 34 45 19 13 12
5º 5º -> 9º 3 7 8 9 13 34 45 19 16 12
5º 5º -> 10º 3 7 8 9 12 34 45 19 16 13
6º 6º -> 8º 3 7 8 9 12 19 45 34 16 13
6º 6º -> 9º 3 7 8 9 12 16 45 34 19 13
6º 6º -> 10º 3 7 8 9 12 13 45 34 19 16
Ordenação por Inserção
Loop Troca 1º 2º 3º 4º 5º 6º 7º 8º 9º 10º
Vetor Inicial 8 16 34 13 19 7 45 3 12 9
7º 7º -> 8º 3 7 8 9 12 13 34 45 19 16
7º 7º -> 9º 3 7 8 9 12 13 19 45 34 16
7º 7º -> 10º 3 7 8 9 12 13 16 45 34 19
8º 8º -> 9º 3 7 8 9 12 13 16 34 45 19
8º 8º -> 10º 3 7 8 9 12 13 16 19 45 34
9º 9º -> 10º 3 7 8 9 12 13 16 19 34 45
Vetor 
Ordenado
3 7 8 9 12 13 16 19 34 45
Ordenação por Inserção
main()
{ int vetor[10] = { 8, 16, 34, 13, 19, 7, 45, 3, 12, 9 };
int x, y, aux;
for(x=0; x<9; x++)
for(y=x+1; y<10; Y++)
if(vetor[x] < vetor[y])
{ aux = vetor[x];
vetor[x] = vetor[y];
vetor[y] = aux;
}
}
FIM
Ordenação por Seleção
8 16 34 13 19 7 45 3 12 9
Vídeo 4 – Tema 2
Ordenação por Seleção
Loop Troca 1º 2º 3º 4º 5º 6º 7º 8º 9º 10º
Vetor Inicial 8 16 34 13 19 7 45 3 12 9
1º 3º -> 4º 8 16 13 34 19 7 45 3 12 9
1º 4º -> 5º 8 16 13 19 34 7 45 3 12 9
1º 5º -> 6º 8 16 13 19 7 34 45 3 12 9
1º 7º -> 8º 8 16 13 19 7 34 3 45 12 9
1º 8º -> 9º 8 16 13 19 7 34 3 12 45 9
1º 9º -> 10º 8 16 13 19 7 34 3 12 9 45
2º 2º -> 3º 8 13 16 19 7 34 3 12 9 45
2º 4º -> 5º 8 13 16 7 19 34 3 12 9 45
2º 6º -> 7º 8 13 16 7 19 3 34 12 9 45
2º 7º -> 8º 8 13 16 7 19 3 12 34 9 45
2º 8º -> 9º 8 13 16 7 19 3 12 9 34 45
Ordenação por Seleção
Loop Troca 1º 2º 3º 4º 5º 6º 7º 8º 9º 10º
Vetor Inicial 8 16 34 13 19 7 45 3 12 9
3º 3º -> 4º 8 13 7 16 19 3 12 9 34 45
3º 5º -> 6º 8 13 7 16 3 19 12 9 34 45
3º 6º -> 7º 8 13 7 16 3 12 19 9 34 45
3º 7º -> 8º 8 13 7 16 3 12 9 19 34 45
4º 2º -> 3º 8 7 13 16 3 12 9 19 34 45
4º 4º -> 5º 8 7 13 3 16 12 9 19 34 45
4º 5º -> 6º 8 7 13 3 12 16 9 19 34 45
4º 6º -> 7º 8 7 13 3 12 9 16 19 34 45
Ordenação por Seleção
Loop Troca 1º 2º 3º 4º 5º 6º 7º 8º 9º 10º
Vetor Inicial 8 16 34 13 19 7 45 3 12 9
5º 1º -> 2º 7 8 13 3 12 9 16 19 34 45
5º 3º -> 4º 7 8 3 13 12 9 16 19 34 45
5º 4º -> 5º 7 8 3 12 13 9 16 19 34 45
5º 5º -> 6º 7 8 3 12 9 13 16 19 34 45
6º 2º -> 3º 7 3 8 12 9 13 16 19 34 45
6º 4º -> 5º 7 3 8 9 12 13 16 19 34 45
7º 1º -> 2º 3 7 8 9 12 13 16 19 34 45
Vetor 
Ordenado
3 7 8 9 12 13 16 19 34 45
Ordenação por Seleção
main()
{ int vetor[10] = { 8, 16, 34, 13, 19, 7, 45, 3, 12, 9 };
int x, aux;
char ch;
do
{ ch = ‘N’;
for(x=0; x<9; x++)
if(vetor[x] < vetor[x+1])
{ aux = vetor[x];
vetor[x] = vetor[x+1];
vetor[x+1] = aux;
ch = ‘S’;
}
} while(ch == ‘S’);
} FIM
Pesquisa Sequencial
1. Esta na 1ª posição? 
2. Esta na 2ª posição?
3. Esta na 3ª posição?
4. Esta na 4ª posição?
5. Esta na 5ª posição?
6. Esta na 6ª posição?
7. Esta na 7ª posição?
8. Esta na 8ª posição?
9. Esta na 9ª posição?
10.Esta na 10ª posição?
1º 2º 3º 4º 5º 6º 7º 8º 9º 10º 11º 12º 13º 14º 15º 16º
3 7 8 10 13 15 18 22 26 27 32 35 43 47 53 57
Pesquisar o 
número 27
Vídeo 5 – Tema 3
Pesquisa Sequencial
main()
{ int vetor[20] = { 3, 7, 8, 10, 13, 15, 18, 22, 26, 27, 32, 35, 43, 47, 53, 57, 62, 63, 72, 
84};
int x, aux;
printf(“Informe um valor para ser localizado no vetor: ”);
scanf(“%d”, aux);
for(x=0; x<20; x++)
if(vetor[x] == aux)
break;
if(x < 20)
printf(“O valor informado esta na posição %d do vetor.”, x);
else
printf(“O valor informado não esta no vetor.”);
} FIM
Pesquisa Binária
1ª Pesquisa:
1. Dividir o vetor ao meio.
2. Pesquisar a posição central “8º”
3. É o número desejado? Não.
4. Esta na metade inferior ou superior?
5. Repetir pesquisa.
1º 2º 3º 4º 5º 6º 7º 8º 9º 10º 11º 12º 13º 14º 15º 16º
3 7 8 10 13 15 18 22 26 27 32 35 43 47 53 57
Pesquisar o 
número 27
Vídeo 6 – Tema 4
Pesquisa Binária
2ª Pesquisa:
1. Dividir o sub vetor superior ao meio.
2. Pesquisar a posição central “12º”
3. É o número desejado? Não.
4. Esta na metade inferior ou superior?
5. Repetir pesquisa.
1º 2º 3º 4º 5º 6º 7º 8º 9º 10º 11º 12º 13º 14º 15º 16º
3 7 8 10 13 15 18 22 26 27 32 35 43 47 53 57
Pesquisar o 
número 27
Pesquisa Binária
3ª Pesquisa:
1. Dividir o sub vetor inferior ao meio.
2. Pesquisar a posição central “10º”
3. É o número desejado? Sim.
4. Fim da Pesquisa
1º 2º 3º 4º 5º 6º 7º 8º 9º 10º 11º 12º 13º 14º 15º 16º
3 7 8 10 13 15 18 22 26 27 32 35 43 47 53 57
Pesquisar o 
número 27
Pergunta: Qual o número máximo de pesquisas 
em um vetor de 1 milhão de posições utilizando 
pesquisa Sequencial e Binária? 
R.: Pesquisa Sequencial = 1.000.000 pesquisas
R.: Pesquisa Binária = 20 pesquisas
148576 / 2 = 524288
524288 / 2 = 262144
262144 / 2 = 131072
131072 / 2 = 65536
65536 / 2 = 31250
32768 / 2 = 16384
16384 / 2 = 8192
8192 / 2 = 4096
4096 / 2 = 2048
2048 / 2 = 1024
FIM
1024 / 2 = 512
512 / 2 = 256
256 / 2 = 128
128 / 2 = 64
64 / 2 = 32
32 / 2 = 12
16 / 2 = 8
8 / 2 = 4
4 / 2 = 2
2 / 2 = 1
Aplicação
Pesquisa e Ordenação
Vídeo 7 – Aplicação Prática
Aplicação
Vejamos o algoritmo da Pesquisa Binária utilizando 
Recursividade.
main()
{ int vetor[20] = { 3, 7, 8, 10, 13, 15, 18, 22, 26, 27, 32, 35, 43, 47, 53, 57, 62, 63, 72, 
84 };
int num, pos;
printf(“Informe um número para pesquisa: ”);
scanf(“%d”, &num);
pos = pesquisa_binaria(vetor, 0, 19, num);
if (pos == -1)
printf(“O número não esta na lista.”);
else
printf(“O número esta na posição %d da lista.”, pos);
}
pesquisa_binaria (int vet[], int inicio, int fim, int numero)
{ int pivo;
if (inicio > fim)
return (-1);
pivo = ((fim - inicio) / 2) + inicio;
if (numero > vet[pivo])
return ( pesquisa_binaria (vet, pivo+1, fim, numero) );
if (numero < vet[pivo])
return ( pesquisa_binaria (vet, inicio, pivo-1, numero) );
return (pivo);
}
FIM
Síntese
Pesquisa e Ordenação
Vídeo 8 – Síntese
Síntese
FIM
� O objetivo de ordenarmos 
bases de dados, é por 
conta da pesquisa da 
informação ser mais rápida.
� Embora mais complexos, 
algoritmos de Pesquisa 
Bin[ária são muito mais 
eficientes.
Referências de Apoio
•SCHILDT, Herbert; C Completo e Total, Ed. Person 
Education do Brasil, São Paulo, 1997
� https://programacaodescompl
icada.wordpress.com/indice/li
nguagem-c/

Outros materiais