Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Modelo de Trabalho Acadêmico, Trabalhos de Sistemas de Informação

Trabalho desenvolvido para o entendimento sobre os métodos de ordenação.

Tipologia: Trabalhos

2012

Compartilhado em 27/09/2012

alisson-santos-24
alisson-santos-24 🇧🇷

5

(1)

1 documento

1 / 13

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
FACULDADE ORÍGENES LESSA
Alisson Aparecido dos Santos
TÍTULO DO TRABALHO: Métodos de Ordenação
LENÇÓIS PAULISTA
2012
Alisson Aparecido dos Santos
pf3
pf4
pf5
pf8
pf9
pfa
pfd

Pré-visualização parcial do texto

Baixe Modelo de Trabalho Acadêmico e outras Trabalhos em PDF para Sistemas de Informação, somente na Docsity!

FACULDADE ORÍGENES LESSA

Alisson Aparecido dos Santos

TÍTULO DO TRABALHO: Métodos de Ordenação

LENÇÓIS PAULISTA

Alisson Aparecido dos Santos

TÍTULO DO TRABALHO: Métodos de Ordenação

Trabalho apresentado a disciplina de

Estrutura de dados II e Iniciação à

Pesquisa ao Prof. Especialista. Glauber

Alves de Oliveira como requisito parcial de

avaliação.

LENÇÓIS PAULISTA

AVALIAÇÃO

RESUMO

    1. INTRODUÇÃO.........................................................................................................
    1. XXXXXXXX..............................................................................................................
    • 2.1. XXXXXXXXXX...................................................................................................
    • 2.1.1. XXXXX............................................................................................................
    1. XXXXXXXXXXXXXX...............................................................................................
    1. XXXXXXXXXX.........................................................................................................
  • CONCLUSÃO..............................................................................................................
  • REFERÊNCIAS...........................................................................................................

1. INTRODUÇÃO

O trabalho tem a finalidade de trazer o entendimento sobre métodos de ordenação, que pode ser tanto voltado à programação ou não.·. Ordenar corresponde ao processo de rearranjar um conjunto de objetos em ordem ascendente ou descendente. O objetivo principal da ordenação é facilitar a recuperação posterior de itens do conjunto ordenado. A atividade de colocar as coisas em ordem está presente na maioria das aplicações em que os objetos armazenados têm de ser pesquisados e recuperados. Para melhor escolha de um método de ordenação é preciso saber sobre a natureza dos dados que serão processados. Entre elas destacam-se duas: Tempo de acesso a um elemento possibilidade de acesso direto a um elemento. Tempo de acesso: Uma estante de livros com seus títulos bem visíveis. Complexibilidade de para acesso: Uma pilha de livros dentro de uma caixa, onde precisamos tirar um a um para saber qual a sua natureza. Em termos computacionais utiliza-se Ordenação interna e ordenação Externa.

  1. Tipos de Ordenação

2.1. Ordenação Interna.

Externa processamento na memória interna. Custo principal o custo de transferir dados entre a memória interna e a memória externa.

  • Existem restrições severas de acesso aos dados.

a. Itens armazenados em fita magnética só podem ser acessados de forma sequencial.

b. (^) b Itens armazenados em disco magnético podem ser acessados diretamente, mas a um custo maior do que o custo para acessar sequencialmente, o que contraindica o uso do acesso direto.

  • O desenvolvimento de métodos de ordenação externa é muito dependente do estado atual da tecnologia. A grande variedade de tipos de unidades de memória externa pode tornar os métodos de ordenação externa dependentes de vários parâmetros que afetam seus desempenhos.
  1. Tipos de Método de Ordenação.

2.3. BubleSort (Bolha)

É o método mais simples em termos de implementação, porém é o menos eciente.

A ideia principal do algoritmo é percorrer o vetor n 1 vezes, a cada passagem fazendo mutuar para o inicio o menor elemento da sequência. Essa movimentação, ilustrada na Figura 2.2, lembra a forma como as bolhas procuram seu próprio nível, por isso o nome do algoritmo. Seu uso não é recomendado para vetores com muitos elementos

EXEMPLO:

1º elem. 2º elem. 3º elem. 4º elem. 5º elem. 6º elem. 7º elem.

1ª comparação

12 9 13 10 3 2 5

1ª troca – 2ª comparação

9 12 13 10 3 2 5

Troca não efetuada - 3ª comparação

9 12 13 10 3 2 5

2ª troca – 4ª comparação

9 12 10 13 3 2 5

3ª troca – 5ª comparação

9 10 12 13 3 2 5

Exemplo de algoritmo #include

using namespace std;

typedef int seqnum[10];

void bubble(seqnum &lista){ int percorre, maximo, aux; for (maximo = 9; maximo >= 1; maximo--){ for (percorre=1; percorre <= maximo; percorre++){ if (lista[percorre] > lista[percorre+1]){ aux = lista[percorre]; lista[percorre] = lista[percorre+1]; lista[percorre+1] = aux; } } } }

int main(){ seqnum lista; int i;

typedef int lista[MAXIMO];

void PrintVet (lista vetor ) { int contador;

for( contador = 0; contador < MAXIMO; contador++) { cout << "vetor[" << contador << "] = " << vetor[contador] << endl; } }

/* divide o vetor em dois, com metade abaixo do numero retornado menor que ele e a metade acima do numero retornado maior que ele */ int separa (lista vetor, int inicio, int fim) { int aux_troca, valor_pivo, pos_inic, pos_final;

valor_pivo = vetor[inicio]; pos_inic = inicio+1; pos_final = fim;

while (pos_inic <= pos_final) { if (vetor[pos_inic] <= valor_pivo) { pos_inic++; } else { if (valor_pivo < vetor[pos_final]) { pos_final--; } else { aux_troca = vetor[pos_inic]; vetor[pos_inic] = vetor[pos_final]; vetor[pos_final] = aux_troca; pos_inic++; pos_final--; } } }

// colocando o valor do pivo em pos_final aux_troca = vetor[inicio]; vetor[inicio] = vetor[pos_final]; vetor[pos_final] = aux_troca;

return( pos_final ); }

/* Ordena um vetor da posicao inicio ate a posicao fim */ void quicksort (lista vetor, int inicio, int fim) { int pivo;

cout << "Entrando quicksort entre "<< inicio << " e " << fim << endl; PrintVet(vetor);

if (inicio < fim) { pivo = separa (vetor, inicio, fim); cout <<"Pivo definido = "<< pivo << "\nVetor apos separacao\n"<< endl; PrintVet(vetor);

/* neste momento, os valores abaixo do pivo sao menores e os valores acima do pivo sao maiores que ele */

quicksort (vetor, inicio, pivo-1); /* recursivamente para os menores que o pivo / quicksort (vetor, pivo+1, fim); / recursivamente para os maiores que o pivo */ } }

int main() { lista vetor; int contador;

printf("Digite o valor dos numeros\n***************\n"); for( contador = 0; contador<MAXIMO; contador++ ) { cout << "\nvetor[" << contador<<"]: "; cin >> vetor[contador]; }

cout << "\nPrimeira sequencia\n"; PrintVet( vetor );

quicksort( vetor, 0, MAXIMO-1 ); system("PAUSE"); }

2.5. ShellSort

Este algoritmo é uma extensão do método InsertShort proposto por Donald Shell em 1959. O algoritmo de inserção troca itens adjacentes quando está procurando o ponto de inserção na sequência destino. Se o menor item estiver na posição mais à direita no vetor, então o número de comparações e movimentações é iguala n 1 para encontra o seu ponto de

shellsort(a,n);

printf("\nArray After Sorting : "); for(i=0;i< n;i++) printf("%5d",a[i]); getch(); return 0; }

REFERÊNCIAS

http://pt.wikibooks.org/wiki/Algoritmos_e_Estruturas_de_Dados/ Algoritmos_de_Ordena%C3%A7%C3%A3o. http://www.decom.ufop.br/menotti/aedI082/tps/tp3-sol1.pdf http://www.univasf.edu.br/~marcelo.linder/arquivos_aed2/aulas/aula16.pdf http://www2.dcc.ufmg.br/disciplinas/aeds2_turmaA1/cap4.pdf http://cppgm.blogspot.com.br/2008/02/shell-sort.html