Algoritmo De Ordenação

Publicado em: 08/19/2009 | Comentário: 0 | Acessos: 833

Há mais ou menos vinte anos atrás, em um processo seletivo, fui surpreendido por um teste que pedia para ordenar um vetor de "n" elementos. Eu conhecia pelo menos três algoritmos que faziam isso, e eram o QuickSort, o Bubblesort e o ShellSort. Na hora da prova, no entanto, não conseguia lembrar de nenhum deles.
Para resolver a questão, portanto, tive de criar, naquele momento, um algoritmo de ordenação próprio.  Fiz o teste e fui aprovado no processo seletivo.

Mais tarde verifiquei, para a minha surpresa, que criara algo inédito nessa área. Todos os algoritmos de ordenação conhecidos utilizam pelo menos dois laços (loop). O meu algoritmo utiliza somente um laço. É verdade que ele não é lá muito rápido, mas resolve o problema.

O melhor caso dele acontece quando o vetor já está ordenado. O pior caso acontece quando o vetor está ordenado em ordem decrescente.

Posteriormente irei complementar esse artigo com a análise da complexidade do pior caso, o melhor caso e o caso médio.

Segue o algoritmo "GideonSort":

1) Em pseudo código:

Início do algoritmo

     " i" é o contador da posiçao do vetor
     i = 0

     Enquanto houver elementos, percorra o vetor
          Se o conteúdo do elemento seguinte for maior que o atual
              Troque as suas posiçoes
               Reinicie o contador de posicao do vetor (i=0);
          Senão
              Aumente "i" de uma posiçao (i=i+1)
          fim-se
     Fim Equanto;
Fim do algoriimo

2) Em linguagem de programaçao java:


/**
* Um novo algoritmo de ordenação
* A new Sort A
lgorithm
* @author Gideon M. Gonçalves - Brazil, Rio de Janeiro - 2008
* e-mail: gideonmarinho@gmail.com
*/

public class GideonSort {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
            int[] vetor={4,3,5,7,2,1,6,8,9};
            Ordena(vetor);
            Imprime(vetor);

    }

    public static void Ordena(int[] vet)
    {
        int aux;  // retém o valor de vetor[i] para substituicao
        int i=0;
       
        while (i < vet.length-1)
        {
            if (vet[i+1] < vet[i]) {
                aux = vet[i];
                vet[i] = vet[i+1];
                vet[i+1] = aux;
                i=0;
            } else
                i++;
        }
    }
   
    public static void Imprime(int[] vet)
    {
        for (int i=0; i< vet.length; i++)
        {
            System.out.println(vet[i]);
        }
        
      }
}       

* * *

(Artigonal SC #1140490)

Avalie este artigo
  • 1
  • 2
  • 3
  • 4
  • 5
  • 0 Voto(s)
    Feedback
    RSS
    Imprimir
    Email
    Re-Publicar

    Fonte do artigo: http://www.artigonal.com/programacao-artigos/algoritmo-de-ordenacao-1140490.html

    Palavras-chave do artigo:

    sort

    ,

    Ordenação

    ,

    Algorítimo

    PROGRAMAÇÃO EM DELPHI, O MAIS FAMOSO COMPILADOR E MODELADOR DE OBJETOS DA ATUALIDADE

    Por: marcos alexandre l Informática > Programação l 02/16/2010 l Acessos: 55
    Felipe Ferreira

    Saiba como surgiu a linguagem .NET, por que ela é diferente das demais linguagens e as vantagens que isso proporciona.

    Por: Felipe Ferreira l Informática > Programação l 01/25/2010 l Acessos: 100
    Carlos Tosin

    Este artigo tem por objetivo mostrar como utilizar a API CGLIB para interceptar chamadas de métodos em objetos no Java. Se você estiver se perguntando “mas por que eu deveria interceptar a chamada de um método?”, pretendo fazer com que você entenda como isso pode aumentar a sua produtividade e reduzir os erros no código.

    Por: Carlos Tosin l Informática > Programação l 01/25/2010 l Acessos: 47
    Carlos Tosin

    Entenda como funciona o uso de memória pelo Java e como se prevenir de memory leaks

    Por: Carlos Tosin l Informática > Programação l 01/25/2010 l Acessos: 34
    Carlos Tosin

    Aprenda a utilizar a Commons E-mail API para enviar e-mails utilizando Java

    Por: Carlos Tosin l Informática > Programação l 01/25/2010 l Acessos: 50
    Felipe Ferreira

    Conheça essa poderosa linguagem que é a ASP. Por ser extremamente fácil de se lidar, ela é hoje, umas das linguagens mais usadas em sites na internet.

    Por: Felipe Ferreira l Informática > Programação l 01/21/2010 l Acessos: 150

    A AGIT INFORMÁTICA iniciou inscrições para turma de Qt 4.6.

    Por: Basilio Miranda l Informática > Programação l 01/15/2010 l Acessos: 59

    A AGIT INFORMÁTICA iniciou inscrições para a primeira turma de LINGUAGEM C++ do ano de 2010. Veja todas as informações do curso em nossos site: www.agit.com.br - desde horários e dias ministrados, valores, formas de pagamento, descontos, localização e muito mais.

    Por: Basilio Miranda l Informática > Programação l 01/15/2010 l Acessos: 46
    Gideon Marinho Gonçalves

    Um alogorítimo de ordenação simples.

    Por: Gideon Marinho Gonçalves l Informática > Programação l 08/19/2009 l Acessos: 833

    Adicionar novo comentário

     
    * Campos obrigatoriós
    Perfil do Autor
    Categorias de Artigos
    Todas as Categorias