Ir ao conteúdo
  • Cadastre-se

Algoritmo de ordenação


RomuloS

Posts recomendados

Dai galera

seguinte eu fiz um algoritmo de ordenação e a ideia

era eliminar as tartarugas ou seja colocar os maiores elementos para o topo do array e os menores no começo o i vai até metade e o j q começa do fim vai até a metade e ai faz se éssa troca depois quando o i for igual ao j usar o insertion sort q é o mais eficaz para arrays q já estão levemente ordenados.

Queria que vocês desses uma avaliada pra ver se ta legal ou não é eficaz.

valeu!

Até batizei o nome aheauie


#include <iostream>
#include <cstdlib>
using namespace std;
/* Algoritmos de ordenação:
6.Invertion Sort(ordenação de inversão)
Autor:Rômulo*/
int main()
{
const int t=10;
int i, j, aux, v[t],key;
cout<<"Digite "<<t<<" numeros:"<<endl;
for(i=0; i<t; i++)
cin>>v[i];
system("CLS");
for(i=0; i<=t/2; i++)
for(j=t-1;j>=t/2;j--)
{
if(i==j)
//insertion sort
{
for(int j=1; j<t; j++)
{
key=v[j];
i=j-1;
while(i>=0 && v[i]>key)
{
v[i+1]=v[i];
i-=1;
}
v[i+1]=key;
}
break;
}
else if(v[i]>v[j])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
}

cout<<"Algoritmo ordenado:"<<endl;
for(i=0; i<t; i++)
cout <<v[i]<<endl;
system("PAUSE");
return 0;
}

Link para o comentário
Compartilhar em outros sites

Fala Romulo.

Que bom que fez seu algoritmo. Pra aprender algo de verdade, só reinventando a roda...quem só usa os códigos, e nunca os escreve de cabeça, dificilmente vai entendê-los realmente bem.

Eu, particularmente, só dominei as strings quando criei a minha "jarlisson.h", e refiz as funções das "string.h" (era exercicio do livro).

Óbvio que deve fazer isso so pra aprender. Pra usar/trabalhar, use as bibliotecas padrões. Sempre.

Sobre seu código, é um método de ordenação mesmo, que bota ordena os inteiros do menor pro maior?

Se for, existe um algoritmo chamado Bubble Sort, que se faz comparando de dois em dois elementos e trocando a posição destes, pra deixar o vetor em ordem.

Notei que usou 3 laços for e 1 while...se for mesmo Bubble Sort, dá pra fazer usando menos laços.

Esses loops são os que mais prejudicam a eficiência de um algoritmo. Então tem que usar o mínimo possível.

As funções system() também são beem pesadas, além de não serem portáveis.

Pra não precisar o system("pause"), por exemplo, use o Code::Blocks, que congela o programa ao seu término ou use um getc etc, mas system() é ruim. Evite.

Sobre a bubble:

http://en.wikipedia.org/wiki/Bubble_sort

Sobre outros algorimos:

http://en.wikipedia.org/wiki/Sorting_algorithm#Bubble_sort

Se não gostarem de inglês: sinto muito!

brincando:

http://www.vivaolinux.com.br/dica/A-melhor-e-mais-importante-linguagem-de-programacao/

Abraço

Link para o comentário
Compartilhar em outros sites

beleza mas o system pause é pra não sair do programa sem querer

porque se não qualquer tecla q tu aperta depois já sai

eu uso o codeblocks e a função getc não conheço.

Mas o algoritmo q eu fiz foi só uma tentativa

acho q tentei melhora um método q já existe

o insertion sort

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!