Ordenar sequência de números

Publicado por Vinícius dos Santos Oliveira 23/05/2009

[ Hits: 10.940 ]

Homepage: https://vinipsmaker.github.io/

Download ordenar_cadeia.c




Este script em C organiza sequências de números de forma crescente ou decrescente.

Finalmente comecei a me divertir escrevendo códigos-fonte interessantes. A sequência pode ter quantos elementos o usuário quiser para o mesmo código-fonte, estando limitado apenas pelo computador. São 48 linhas que usam "for, do...while, vetores, etc".

  




Scripts recomendados

Beer.h

Leitura de String

Stack (LIFO)

Função strncat

Calculadora em C++


  

Comentários
[1] Comentário enviado por vinipsmaker em 23/05/2009 - 09:26h

Para quem quiser substituir o do...while por while terá de mudar o valor inicial da variável j para 0.

[2] Comentário enviado por danielgimenes em 26/05/2009 - 08:00h

Nossa velho...

esse código é muito lento para um 'n' grande.

Caso tenha interesse, procure os algoritmos Quicksort e Mergesort para estudar. São muito bacanas e têm um desempenho muito melhor.

;)

De qualquer forma, parabêns pela iniciativa e bom estudo!

[[]]'s
Daniel

[3] Comentário enviado por vinipsmaker em 26/05/2009 - 09:40h

O método bolha tem verificações a mais e desde o começo eu tinha pensado nisso. Eu li a apostila, então o autor da apostila iria começar a mostrar o código-fonte, então eu fechei a apostila e tentei eu mesmo. Depois eu vi que a minha implementação era superior, pois no código-fonte do autor da apostila, era preciso um código-fonte diferente para sequência com o número de elementos diferente.
De qualquer forma, obrigado por me indicar estes métodos, mas o quicksort também não é muito bom.

[4] Comentário enviado por vinipsmaker em 26/05/2009 - 10:19h

Pesquisei mais algoritmos e achei os algoritmos selectionsort, radixsort e gnomesort interessantes.

[5] Comentário enviado por DanielGimenes em 27/05/2009 - 08:01h

Vinicius,

O quicksort e o mergesort são bons sim! E são muito utilizados. A própria STL usa. O quick, apesar de ter O(n^2), na média executa em O(nlogn), sendo um bom desempenho. Este é considerado o melhor algoritmo geral de ordenação. E o merge é bastante usado pois é estável (não tira da ordem valores iguais) e ideal para implementações com lista ligada, pois gasta muito menos memória e processamento do que, por exemplo, o quicksort e o heapsort nas mesmas condições. (Bibliografia: Introduction to Algorithms, CLRS; Wikipédia; e conhecimentos)

Existem outros interessantes também. Chamo a atenção para o radixsort que você mencionou e o bucketsort. Estes são muuuuito rápidos, mas não podem ser usados em qualquer problema, pois dependem de que você possa assumir certos atributos sobre os dados.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts