A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Métodos de Ordenação Ordenação em memória primária.

Apresentações semelhantes


Apresentação em tema: "Métodos de Ordenação Ordenação em memória primária."— Transcrição da apresentação:

1 Métodos de Ordenação Ordenação em memória primária

2 Objetivos Dado um vetor de tamanho n, com índices de 0 a n-1, onde cada posição possui uma chave de ordenação Um algoritmo de ordenação deve rearranjar o vetor de forma a estabeler uma ordem entre os elementos onde, para quaisquer elementos v i-1, v i v i-1 < v i, i = 1..n-1, considerando a chave de ordenação Vetor desordenado V de tamanho n = 5 Ordena(V,n) Vetor ordenado:

3 Método da Seleção (Selection Sort) Descrição: Seleciona sempre o menor elemento remanescente do conjunto não ordenado e move este elemento para sua posição correta Algoritmo 1. Encontrar o menor elemento e trocar com o elemento na primeira posição do vetor 2.Encontrar o segundo menor elemento e trocar com o elemento na segunda posição do vetor e assim sucessivamente...

4 Método da Seleção algoritmo seleção (int a[], int n){ Para i da primeira posição até a penúltima faca mínimo = i para j da posição seguinte a i até a ultima posição faça se (a[j] < a[mínimo] minimo =j; fim para troca(a[mínimo],a[i]); fim algoritmo Exemplo: {7,3,2,10,1} Para i =0, mínimo terminará com o valor 4, e o 1 será trocado com o 7 {1,3,2,10,7} i=1, mínimo terminará com o valor 2, e o 2 será trocado com o 3 {1,2,3,10,7} i= 2, mínimo terminará com o valor 4, e não haverá troca i=3, mínimo terminará com o valor 4, e o 7 será trocado com o 10 {1,2,3,7,10}

5 Método da Inserção Descrição: Considera cada elemento uma vez inserindo- o em seu lugar correto entre os elementos que já estão em ordem. (Usado para ordenar cartas de um baralho na mão do jogador.) Algoritmo: 1.O elemento é inserido entre os ordenados movendo-se os elementos maiores que ele uma posição para a direita e posteriormente inserindo-o na posição vaga.

6 Método da Inserção (Insertion sort) Algoritmo insercao(int A[], int n) para j do segundo elemento até o último faça x = A[j]; i=j-1; enquanto (i >= 0 e A[i] > x) faça A[i+1]=A[i]; i = i-1; fim enquanto A[i+1]=x; fim para fim algoritmo Exemplo: {7,3,2,10,1} Para j = 1, o 7 é empurrado uma posição e o 3 é colocado na posição (i+1) = 0 {3,7,2,10,1} Para j =2, { 3,7} são empurrados uma posição e o 2 é colocado na posição 0 {2,3,7,10,1} Para j=3, ninguém é empurrado e o 10 é colocado na mesma posição onde estava {2,3,7,10,1} Para j =4, {2,3,7,10} são empurrados uma posição e o 1 é inserido na posição 0: {1,2,3,7,10}

7 Método da bolha (bouble sort) Descrição: Consiste em percorrer o vetor trocando os elementos adjacentes caso necessário. O maior elemento vai subir (como um bolha) para a última posição do vetor.

8 Método da Bolha algoritmo bolha ( int a[],int n) Para i do ultimo elemento até o segundo faça para j do segundo elemento até i faça se (a[j-1]>a[j]) troca(&a[j-1],&a[j]); } Exemplo ijA={7,3,2,10,1} 41{3,7,2,10,1} 2{3,2,7,10,1} 3 4{3,2,7,1,10} 31{2,3,7,1,10} 2 3{2,3,1,7,10} 21 2{2,1,3,7,10} 11{1,2,3,7,10}

9 Exercício Implementar os métodos inserção, seleção e bolha em C e fazer uma avaliação de desempenho dos mesmos Usar a função abaixo para gerar vetores aleatórios: #include geravetor(int a[], int N){ int i; srand(time(NULL)); for (i=0;i

10 Exercícios Usar a função ftime para medir o tempo. Exemplo: #include struct timeb ini, fim; ftime(&ini); // obtem o tempo no inicio Ordena(v,n); ftime(&fim); // obtem o tempo no final // Computa o tempo gasto e imprime printf("tempo gasto na ordenacao: %f segundos \n", ((double) fim.time + ((double) fim.millitm * 0.001)) - ((double) ini.time + ((double) ini.millitm * 0.001)));

11 Exercícios a) Realizar testes com vetores de tamanho 20000, 40000, 60000, 80000, , , , , , , e Utilize um software de planilha para traçar gráficos que permitam visualizar e comporar o desempenho dos métodos.


Carregar ppt "Métodos de Ordenação Ordenação em memória primária."

Apresentações semelhantes


Anúncios Google