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

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

Ordenação em memória primária

Apresentações semelhantes


Apresentação em tema: "Ordenação em memória primária"— Transcrição da apresentação:

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

2 Objetivos 7 10 7 10 Vetor desordenado V de tamanho n = 5 Ordena(V,n)
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 vi-1, vi  vi-1 < vi , i = 1..n-1, considerando a chave de ordenação. Vetor desordenado V de tamanho n = 5 1 2 3 4 7 10 Ordena(V,n)  Vetor ordenado: 1 2 3 4 7 10

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 Encontrar o menor elemento e trocar com o elemento na primeira posição do vetor 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 Exemplo: {7,3,2,10,1}
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: 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 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 i j A={7,3,2,10,1} 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 i j A={7,3,2,10,1} 4 1 {3,7,2,10,1} 2 {3,2,7,10,1} 3 {3,2,7,1,10} {2,3,7,1,10} {2,3,1,7,10} {2,1,3,7,10} {1,2,3,7,10}

9 Exercício Usar a função abaixo para gerar vetores aleatórios:
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 <math.h> geravetor(int a[], int N){ int i; srand(time(NULL)); for (i=0;i<N;i++) a[i]= (rand()%N); }

10 Exercícios #include<sys/timeb.h>
Usar a função ftime para medir o tempo. Exemplo: #include<sys/timeb.h> 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
Utilize um software de planilha para traçar gráficos que permitam visualizar e comporar o desempenho dos métodos.


Carregar ppt "Ordenação em memória primária"

Apresentações semelhantes


Anúncios Google