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

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

Algoritmos de Ordenação

Apresentações semelhantes


Apresentação em tema: "Algoritmos de Ordenação"— Transcrição da apresentação:

1 Algoritmos de Ordenação
CONTEÚDO (1) Auto-avaliação (2) Ordenação de Dados (3) Ordenação por troca: bubble sort

2 Ordenação/Classificação
(1) Auto-avaliação Ordenação/Classificação Antes de prosseguir: Faça o acompanhamento das variáveis, conforme explicado na aula passada, para realiazar uma pesquisa binária buscando as chaves: 5 12 Implemente o algoritmo de buscaBinária de forma recursiva, e faça o acompanhamento novamente vet inicio fim meio vet[i] vet[i+1] chave 1 2 3 4 5 9

3 Ordenação/Classificação
Temos basicamente duas formas de realizar ordenação: ou inserimos os elementos na estrutura de dados respeitando a ordenação (dizemos que a ordenação é garantida por construção); ou a partir de um conjunto de dados já criado, aplicamos um algoritmo para ordenar seus elementos.

4 Ordenação Bolha (Bubble Sort)
(3) Ordenação por troca Ordenação Bolha (Bubble Sort) A idéia fundamental é fazer uma série de comparações entre os elementos do vetor. Pares de elementos do vetor são comparados dois a dois (e eventualmente trocados) até o final do vetor. Quando dois elementos estão fora de ordem, esses dois elementos são trocados de posição, ficando em ordem correta. O processo é repetido até que nenhuma troca seja feita. 7 4 1 9 2 4 7 1 9 2 1 7 4 9 2 1 4 7 9 2 1 2 7 9 4 1 2 4 9 7 1 2 4 7 9

5 O(n2) Pseudocódigo Algorithm Bubble_Sort(X, n)
(3) Ordenação por troca Pseudocódigo Algorithm Bubble_Sort(X, n) Input array X of n integers Output array X sorted in a non-decreasing order for i  0 to n  1 do for j  i+1 to n-1 do if (X[i]>X[j]) then s  X[i]; X[i]  X[j]; X[j]  s; return X // after i-th round, the i-th smallest number is at i-th position. O(n2)

6 Código em C (outra versão do bubble sort)
(3) Ordenação por troca Código em C (outra versão do bubble sort) #include <stdio.h> #define MAX 10 void troca(int i, int j, int v[]){ int aux= v[i]; v[i]=v[j]; v[j]=aux; } void bubbleSort(int v[], int n){ int i=0; while (i<n-1){ if (v[i]>v[i+1]){ troca(i,i+1,v); i=0; } else i++; void imprimeVetor(int v[], int n){ for (int i=0;i<n;i++) printf(" %3d",v[i]); void bubbleSortRecursivo(int v[], int n){ int trocou=0, i=0; while (i<n-1){ if (v[i]>v[i+1]){ troca(i,i+1,v); trocou=1; } i++; if (trocou==1) bubbleRecursivo(v, n); main(){ int qtde=MAX; int vet[MAX] = {1,5,7,2,8,3,6,12,4,10}; printf("\nVetor Original:\n"); imprimeVetor(vet,qtde); bubbleSort(vet,qtde); //bubbleSortRecursivo(vet,qtde); printf("\nVetor Ordenado:\n");


Carregar ppt "Algoritmos de Ordenação"

Apresentações semelhantes


Anúncios Google