Buscar

3 Algoritmos de Ordenação - p1

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 3, do total de 33 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 6, do total de 33 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 9, do total de 33 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

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ALGORITMOS DE ORDENAÇÃO
PARTE 1
MÉTODOS DE ORDENAÇÃO
Introdução
Ordenar corresponde ao processo de reorganizar um conjunto de objetos em uma ordem ascendente ou descendente
Consiste em facilitar a recuperação posterior de itens do conjunto ordenado
Exemplo: lista telefônica, biblioteca, geração de relatórios
Outras funções
Teste de unicidade 
Remoção de duplicatas 
Busca 
Encontrar o i-ésimo maior (ou menor) elemento de uma coleção 
Contagem de frequência
Métodos de ordenação
Os mais populares algoritmos de ordenação são:
 Insertion sort
Selection sort
Bubble sort
Comb sort
Quick sort
Merge sort
Heap sort
Shell sort. 
Métodos de ordenação
Os mais populares algoritmos de ordenação são:
Insertion sort
Selection sort
Bubble sort
Comb sort
Quick sort
Merge sort
Heap sort
Shell sort. 
BUBBLE SORT
É o algoritmo mais simples, mas o menos eficiente.
 Neste algoritmo cada elemento da posição i será comparado com o elemento da posição i + 1.
Caso o elemento da posição 2 for maior que o da posição 3, eles trocam de lugar e assim sucessivamente. 
Por causa dessa forma de execução, o vetor terá que ser percorrido quantas vezes que for necessária, tornando o algoritmo ineficiente para listas muito grandes.
BUBBLE SORT
BUBBLE SORT - IMPLEMENTAÇÃO
public static void main(String args[]){
    int[] vet = {8, 9, 3, 5, 1};
    int aux = 0;
    int i = 0;
     
    System.out.println("Vetor desordenado: ");
    for(i = 0; i<5; i++){
        System.out.println(" "+vet[i]);
    }
    System.out.println(" ");
     
    for(i = 0; i<5; i++){
        for(int j = 0; j<4; j++){
            if(vet[j] > vet[j + 1]){
                aux = vet[j];
                vet[j] = vet[j+1];
                vet[j+1] = aux;
            }
        }
    }
    System.out.println("Vetor organizado:");
    for(i = 0; i<5; i++){
        System.out.println(" "+vet[i]);
    }
}
QUAL A COMPLEXIDADE DO ALGORITMO NO PIOR CASO?
BUBBLE SORT
Vantagens
Simplicidade do algoritmo
Estável
Desvantagens
Lentidão
Indicações
Tabelas muito pequenas
Quando se sabe que a tabela está quase ordenada
Exercício
Implemente o bubble sort 
Meça o tempo e conte o nº de trocas nas seguintes situações:
Vetores aleatórios, ordenados e invertidos
Tamanhos: 
100
200
400
1000
2000
10000
SELECTION SORT
Este algoritmo é baseado em se passar sempre o menor valor do vetor para a primeira posição (ou o maior dependendo da ordem requerida), depois o segundo menor valor para a segunda posição e assim sucessivamente, até os últimos dois elementos.
É repetido esse processo até que a lista esteja ordenada.
SELECTION SORT
SELECTION SORT - IMPLEMENTAÇÃO
QUAL A COMPLEXIDADE DO ALGORITMO NO PIOR CASO?
void selection_sort(int∗ v, int n) { //n é tamanho do vetor
	int i, j, min, aux;
	for (i = 0; i < (n−1); i++){
		min = i;
		for (j = (i+1); j < n; j++) {
if(v[j] < v[min])
	min = j;
		}
		if (v[i] != v[min]) {
aux = v[i];
v[i] = v[min];
v[min] = aux;
}
	}
}
SELECTION SORT
Uma vantagem do Selection Sort é que entre os algoritmos de ordenação ele apresenta uma das menores quantidades de movimentos entre os elementos, assim pode haver algum ganho quando se necessita ordenar estruturas complexas.
Uma desvantagem é que o número de comparações é igual para o melhor caso, caso médio e o pior caso. Assim, mesmo que o vetor esteja ordenado o custo continua quadrático.
Não é estável (depende da implementação).
Exercício
Implemente o selection sort 
Meça o tempo e conte o nº de trocas nas seguintes situações:
Vetores aleatórios, ordenados e invertidos
Tamanhos: 
100
200
400
1000
2000
10000
INSERTION SORT
Compare o valor do item “chave” que está entrando com os outros itens até que se sua posição seja encontrada. Essa comparação é feita em direção à esquerda.
Se o item que você está comparando for menor, desloque o item para a direita , visando “abrir” um novo espaço para colocar a carta na posição correspondente);
Finalmente ao encontrar um item maior ou não haver mais itens, significa que você encontrou a posição que este item deve estar: coloque o item “chave” na posição correspondente.
INSERTION SORT
INSERTION SORT - IMPLEMENTAÇÃO
QUAL A COMPLEXIDADE DO ALGORITMO NO PIOR CASO?
public static void insertionSort(int[] vetor) {
    int j;
    int key;
    int i;
    
    for (j = 1; j < vetor.length; j++)
    {
      key = vetor[j];
      for (i = j - 1; (i >= 0) && (vetor[i] > key); i--)
      {
         vetor[i + 1] = vetor[i];
       }
        vetor[i + 1] = key;
    }
}
INSERTION SORT
O número mínimo de comparações e movimentos ocorre quando os itens estão originalmente em ordem.
O número máximo de comparações e movimentos ocorre quando os itens estão originalmente em ordem reversa.
Bom método a ser usado quando a sequência esta quase ordenada, ou quando se deseja adicionar poucos itens a uma sequência já ordenada.
O algoritmo de ordenação por inserção é estável.
Exercício
Implemente o Insertion sort 
Meça o tempo e conte o nº de trocas nas seguintes situações:
Vetores aleatórios, ordenados e invertidos
Tamanhos: 
100
200
400
1000
2000
10000
Material auxiliar
https://pt.khanacademy.org/computing/computer-science/algorithms
22
Revisão
23
24
ANÁLISE DOS MÉTODOS DE ORDENAÇÃO
Bubble sort
for( i = 0 ; i < N-1 ; i++ )
 for( j = 1 ; j < N-i ; j++ )
 if ( v[j] < v[j-1]) 
 {
 		aux = v[j];
 		v[j] = v[j-1];
 		v[j-1] = aux;
 } 
25
Selection sort
for (i = 0; i < N - 1; i++)
 { 
 Min = i;
 for (j = i + 1 ; j < N; j++)
 if ( v[j] < v[Min]) 
 	Min = j;
 aux = v[Min];
 v[Min] = v[i];
 v[i] = aux;
 }
26
Insertion sort
for (i = 1; i < N; i++)
 {
 	aux = v[i];
 	j = i - 1;
 	while ( (j >= 0) && (aux < v[j]) )
 	{
 		v[j + 1] = v[j];
 		j--;
 	}
 	v[j + 1] = aux;
 }
27
Mais alguns exercícios
28
Encontrar o máximo de um vetor
Qual a complexidade no melhor e no pior caso?
d e f exp ( x , a ) : 
r = 1 
w hil e a ! = 0 : 	
i f ( a % 2 ) != 0: 
r ∗= x 
a −= 1 
 a / = 2 
 x = x∗x 
 r e t u r n r
Sugestão
Assistir os vídeos do canal da Univesp – Universidade Virtual do Estado de São Paulo:
https://www.youtube.com/watch?v=ojCAnD7vrOY
 
.MsftOfcThm_Accent1_Fill {
 fill:#4472C4; 
}
.MsftOfcThm_Accent1_Stroke {
 stroke:#4472C4; 
}
 
 
.MsftOfcThm_Accent1_Fill {
 fill:#4472C4; 
}
.MsftOfcThm_Accent1_Stroke {
 stroke:#4472C4; 
}
 
 
.MsftOfcThm_Accent1_Fill {
 fill:#4472C4; 
}
.MsftOfcThm_Accent1_Stroke {
 stroke:#4472C4; 
}
 
 
.MsftOfcThm_Accent1_Fill {
 fill:#4472C4; 
}
.MsftOfcThm_Accent1_Stroke {
 stroke:#4472C4; 
}

Continue navegando