Beruflich Dokumente
Kultur Dokumente
1. INTRODUÇÃO
Um algoritmo é o fluxograma, uma representação visual que utiliza símbolos que são
figuras geométricas, cada uma com sua função especificam, mostra o fluxo do
algoritmo e também elimina as várias interpretações que a descrição narrativa permitia
sobre um algoritmo. Existe a linguagem algoritma (Portugol) que é a que mais se
aproxima da estrutura de uma linguagem estruturada.
Os mais populares algoritmos de ordenação são: Insertion Sort, Selection Sort, Bubble
Sort, Comb Sort, Merge Sort.
9
2. Objetivo do Trabalho
A vantagem dessa forma de representação é que qualquer um pode fazê-la sem ter
conhecimentos avançados.
A desvantagem é que não há um padrão, cada pessoa pode escrever como quiser.
3. Estrutura de Dados
4. Algoritmos de Ordenação
11
Podemos ilustrar um algoritmo pelo exemplo de uma receita culinária, embora muitos
algoritmos sejam mais complexos. Um Algoritmo mostra passo a passo os
procedimentos necessários para resolução de um problema.
Figura 3:Algoritmo
6. Métodos de Ordenação
13
typedef struct
{
int key ; //Campo chave
vetorpalavrasEmbaralhadas.Add(new palavrasAleatoria.Add("M");
List<string>()); palavrasAleatoria.Add("A");
palavrasAleatoria.Add("B");
vetorpalavrasEmbaralhadas.Add(new palavrasAleatoria.Add("O");
List<string>()); palavrasAleatoria.Add("C");
palavrasAleatoria.Add("S");
vetorpalavrasEmbaralhadas.Add(new palavrasAleatoria.Add("D");
List<string>()); palavrasAleatoria.Add("Z");
palavrasAleatoria.Add("E");
vetorpalavrasEmbaralhadas.Add(new palavrasAleatoria.Add("X");
List<string>()); palavrasAleatoria.Add("G");
List<String> palavrasAleatoria = palavrasAleatoria.Add("F");
new List<String>(); palavrasAleatoria.Add("Z");
14
palavrasAleatoria.Add("I"); palavrasAleatoria.Add("N");
palavrasAleatoria.Add("Q"); palavrasAleatoria.Add("U");
palavrasAleatoria.Add("W"); palavrasAleatoria.Add("J");
palavrasAleatoria.Add("L"); palavrasAleatoria.Add("P");
palavrasAleatoria.Add("H"); palavrasAleatoria.Add("Y");
palavrasAleatoria.Add("N"); palavrasAleatoria.Add("R");
palavrasAleatoria.Add("U"); palavrasAleatoria.Add("T");
palavrasAleatoria.Add("J"); palavrasAleatoria.Add("V");
palavrasAleatoria.Add("P"); palavrasAleatoria.Add("M");
palavrasAleatoria.Add("Y"); palavrasAleatoria.Add("A");
palavrasAleatoria.Add("R"); palavrasAleatoria.Add("B");
palavrasAleatoria.Add("T"); palavrasAleatoria.Add("O");
palavrasAleatoria.Add("V"); palavrasAleatoria.Add("C");
palavrasAleatoria.Add("M"); palavrasAleatoria.Add("S");
palavrasAleatoria.Add("A"); palavrasAleatoria.Add("D");
palavrasAleatoria.Add("B"); palavrasAleatoria.Add("Z");
palavrasAleatoria.Add("O"); palavrasAleatoria.Add("E");
palavrasAleatoria.Add("C"); palavrasAleatoria.Add("X");
palavrasAleatoria.Add("S"); palavrasAleatoria.Add("G");
palavrasAleatoria.Add("D"); palavrasAleatoria.Add("F");
palavrasAleatoria.Add("Z"); palavrasAleatoria.Add("Z");
palavrasAleatoria.Add("E"); palavrasAleatoria.Add("I");
palavrasAleatoria.Add("X"); palavrasAleatoria.Add("Q");
palavrasAleatoria.Add("G"); palavrasAleatoria.Add("W");
palavrasAleatoria.Add("F"); palavrasAleatoria.Add("L");
palavrasAleatoria.Add("Z"); palavrasAleatoria.Add("H");
palavrasAleatoria.Add("I"); palavrasAleatoria.Add("N");
palavrasAleatoria.Add("Q"); palavrasAleatoria.Add("U");
palavrasAleatoria.Add("W"); palavrasAleatoria.Add("J");
palavrasAleatoria.Add("L"); palavrasAleatoria.Add("P");
palavrasAleatoria.Add("H"); palavrasAleatoria.Add("Y");
15
palavrasAleatoria.Add("R"); palavrasAleatoria.Add("G");
palavrasAleatoria.Add("T"); palavrasAleatoria.Add("F");
palavrasAleatoria.Add("V"); palavrasAleatoria.Add("Z");
palavrasAleatoria.Add("M"); palavrasAleatoria.Add("I");
palavrasAleatoria.Add("A"); palavrasAleatoria.Add("Q");
palavrasAleatoria.Add("B"); palavrasAleatoria.Add("W");
palavrasAleatoria.Add("O"); palavrasAleatoria.Add("L");
palavrasAleatoria.Add("C"); palavrasAleatoria.Add("H");
palavrasAleatoria.Add("S"); palavrasAleatoria.Add("Giovanni");
palavrasAleatoria.Add("D"); palavrasAleatoria.Add("Ricardo");
palavrasAleatoria.Add("Z"); palavrasAleatoria.Add("Gustavo");
palavrasAleatoria.Add("E"); palavrasAleatoria.Add("Eduardo");
palavrasAleatoria.Add("X");
}
teste *= 10;
}
Tabela 2: Tarray
16
Quando o arquivo a ser ordenado não cabe na memória principal, tem de ser
armazenado em fita ou disco.
Figura 4:Redes
17
Métodos Simples:
BubbleSort
InsertSort
Métodos Eficientes:
ShellSort
QuickSort
BubbleSort
Bubble sort é um dos algoritmos mais simples, porém um dos algoritmos menos
eficientes. Nesse algoritmo o elemento que se encontra na posição x será comparado
com o da posição x + 1, ou seja, o elemento que se encontra na posição dois será
comparado com o da posição três. Caso o elemento da posição dois for maior que o da
posição três, 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.
18
Vantagens:
* Fácil implementação;
* Algoritmo estável
Desvantagens:
7.2 InsertSort
Vantagens:
* Fácil implementação;
* Algoritmo estável;
Desvantagens:
7.3 ShellSort
Vantagens:
* Fácil implementação;
Desvantagens:
7.4 QuickSort
Vantagens:
23
* Complexidade n log n.
Desvantagens:
* Implementação difícil;
* Não é estável.
24
8.1 Resultados
BubbleSort
InsertSort
QuickSort
9. CÓDIGO FONTE
25
Classe ordenação
using System;
using System.Collections.Generic;
using System.Text;
namespace APSOrdenacaoDeDados
{
class Ordenacao
{
//Metodos que seream sobrescritos em cada classe especializada
public virtual List<String> ordenar(List<String> lista) { return null; }
public virtual String nomeDaOrdenacao() { return ""; }
}
}
Classe BubbleSort
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace APSOrdenacaoDeDados
{
class BubleSort : Ordenacao
{
{
for (int i = 1; i < lista.Count; i++)
{
for (int j = 0; j < lista.Count - 1; j++)
{
if (lista[j].CompareTo(lista[j + 1]) == 1)
{
string temp = lista[j];
lista[j] = lista[j + 1];
lista[j + 1] = temp;
return lista;
}
//Aqui ele retorna o nome da Ordenação
public override string nomeDaOrdenacao()
{
return "BubleSort";
}
}
}
Classe InsertSort
using System;
using System.Collections.Generic;
27
using System.Linq;
using System.Text;
namespace APSOrdenacaoDeDados
{
class InsertSort : Ordenacao
{
//Aui retorna o nome da ordenação
public override string nomeDaOrdenacao()
{
return "InsertSort";
}
}
}
Classe QuickSort
using System;
using System.Collections.Generic;
using System.Text;
namespace APSOrdenacaoDeDados
{
class QuickSort : Ordenacao
{
//Aqui ele sofre uma sobre carga
public List<String> organizar(List<String> vetor)
{
return organizar(vetor, 0, vetor.Count - 1);
}
return vetor;
}
}
vetor[inicio] = vetor[f];
vetor[f] = pivo;
return f;
30
return organizar(lista);
}
//aqui devolve o nome do stilo do algoritmo
public override string nomeDaOrdenacao()
{
return "QuickSort";
}
}
}
Classe Programam
using System;
using System.Collections.Generic;
using System.Text;
using System.Timers;
namespace APSOrdenacaoDeDados
{
//Essa é a classe teste
class Program
{
31
//Aqui é criado dois conjuntos de lista pois uma será copia da outra
//afim de não ser necessario reescrevela apenas trabalhar com a copia depois
//de ordenado rertona a forma anterior.
List<List<String>> copiaVetorpalavrasEmbaralhadas = new List<List<string>>();
List<List<String>> vetorpalavrasEmbaralhadas = new List<List<string>>();
//Aqui é declaradoo e instañciado e preencido esse vetor como base com 100
itens
32
palavrasAleatoria.Add("C");
palavrasAleatoria.Add("S");
palavrasAleatoria.Add("D");
palavrasAleatoria.Add("Z");
palavrasAleatoria.Add("E");
palavrasAleatoria.Add("X");
palavrasAleatoria.Add("G");
palavrasAleatoria.Add("F");
palavrasAleatoria.Add("Z");
palavrasAleatoria.Add("I");
palavrasAleatoria.Add("Q");
palavrasAleatoria.Add("W");
palavrasAleatoria.Add("L");
palavrasAleatoria.Add("H");
palavrasAleatoria.Add("N");
palavrasAleatoria.Add("U");
palavrasAleatoria.Add("J");
palavrasAleatoria.Add("P");
palavrasAleatoria.Add("Y");
palavrasAleatoria.Add("R");
palavrasAleatoria.Add("T");
palavrasAleatoria.Add("V");
palavrasAleatoria.Add("M");
palavrasAleatoria.Add("A");
palavrasAleatoria.Add("B");
palavrasAleatoria.Add("O");
palavrasAleatoria.Add("C");
palavrasAleatoria.Add("S");
palavrasAleatoria.Add("D");
palavrasAleatoria.Add("Z");
palavrasAleatoria.Add("E");
34
palavrasAleatoria.Add("X");
palavrasAleatoria.Add("G");
palavrasAleatoria.Add("F");
palavrasAleatoria.Add("Z");
palavrasAleatoria.Add("I");
palavrasAleatoria.Add("Q");
palavrasAleatoria.Add("W");
palavrasAleatoria.Add("L");
palavrasAleatoria.Add("H");
palavrasAleatoria.Add("N");
palavrasAleatoria.Add("U");
palavrasAleatoria.Add("J");
palavrasAleatoria.Add("P");
palavrasAleatoria.Add("Y");
palavrasAleatoria.Add("R");
palavrasAleatoria.Add("T");
palavrasAleatoria.Add("V");
palavrasAleatoria.Add("M");
palavrasAleatoria.Add("A");
palavrasAleatoria.Add("B");
palavrasAleatoria.Add("O");
palavrasAleatoria.Add("C");
palavrasAleatoria.Add("S");
palavrasAleatoria.Add("D");
palavrasAleatoria.Add("Z");
palavrasAleatoria.Add("E");
palavrasAleatoria.Add("X");
palavrasAleatoria.Add("G");
palavrasAleatoria.Add("F");
palavrasAleatoria.Add("Z");
palavrasAleatoria.Add("I");
35
palavrasAleatoria.Add("Q");
palavrasAleatoria.Add("W");
palavrasAleatoria.Add("L");
palavrasAleatoria.Add("H");
palavrasAleatoria.Add("Giovane");
palavrasAleatoria.Add("Ricardo");
palavrasAleatoria.Add("Gustavo");
palavrasAleatoria.Add("Eduardo");
}
teste *= 10;
}
Console.WriteLine();
try
{//aqui é montado o menu do sistema
Console.WriteLine("Escolha o menu precionando o numero
correspondente");
{
//************************Inicia a contagem de tempo****************
DateTime inicioT = DateTime.Now;
//Aqui é chamado o processo de ordenação
List<String> listaOrdenada =
ordenacao[escolhaDoMenu].ordenar(copiaVetorpalavrasEmbaralhadas[i]);
DateTime fimT = DateTime.Now;
//************************Termina a contagem de tempo****************
Console.WriteLine();
Console.WriteLine("Com "+quantDeItensNoVetor.ToString() +"
intes levou: {0} milessegundos ",fimT.Subtract(inicioT));
Console.WriteLine();
quantDeItensNoVetor *= 10;
}
Console.WriteLine();
{
Console.WriteLine("Precione um numero dentro do escopo "+erro);
}
}
}
39
10. Conclusão
Vale a pena inserir uma verificação (Min == i) para evitar a troca, no método SelectSort;
Vale a pena usar os algoritmos simples até vetores de 70 elementos, acima desse valor
deve-se usar os algoritmos eficientes.As dificuldades encontradas foram devido ao fato
haver várias alterações no código, implementação do InserSort com cursores e de gerar
os gráficos com eficiência. A combinação entre a tecnologia disponibilizada pelo
processamento paralelo e a eficiência dos algoritmos de ordenação produz algoritmos
paralelos de ordenação comanto poder de computação.
40
11. Bibliografia
http://www.devmedia.com.br/algoritmos-de-ordenacao-analise-e-comparacao
www.google.com.br/search?
q=DESENVOLVIMENTO+DE+SISTEMA+PARA+ANÁLISE+DE+PERFORMANCE+DE+
ALGORITMOS+DE+ORDENAÇÃO+DE+DADOS”&hl=pt-
BR&source=lnms&sa=X&ei=DQt5U-
6mGpeQqAbR54HgCA&ved=0CAcQ_AUoAA&biw=1366&bih=639&dpr=1
www.devmedia.com.br/algoritmos-de-ordenacao-analise-e-comparacao/28261
http://pt.wikipedia.org/wiki/Estrutura_de_dados
http://pt.wikipedia.org/wiki/Bubble_sort
41
42
43