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.
axo q foi mais uma tentativa de melhora o insertion sort
Queria que vocês desses uma avaliada pra ver se ta legal ou não é eficaz.
valeu!
Até batizei o nome aheauie
Código:
#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;
}
Pergunta
Rômulo_SD
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.
axo q foi mais uma tentativa de melhora o insertion sort
Queria que vocês desses uma avaliada pra ver se ta legal ou não é eficaz.
valeu!
Até batizei o nome aheauie Código: #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; }Editado por Rômulo_SDLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.