Ir ao conteúdo
  • Cadastre-se
Fabiani

RESOLVIDO Ajuda no método de seleção (linguagem c)

Recommended Posts

Tenho que fazer um exercício de ordenação utilizando o método da seleção. Aí está o código que consegui fazer:
 

#include <stdlib.h>#include <stdio.h>int main (){int i,j,tam,aux;int v[30]; printf ("Informe o tamanho do vetor: ");scanf ("%d", &tam);printf ("Informe os dados do vetor: \n");for (i=0;i<tam;i++){scanf ("%d", &v[i]);}printf ("\nOrdem nao ordenanda: \n");for (i=0;i<tam;i++){printf ("%d \n", v[i]);} for (i=0;i<tam-1;i++)for (j=i+1;i<tam;i++){if (v[i]>v[j]){aux=v[i];v[i]=v[j];v[j]=aux;}}printf ("\nOrdem ordenada: \n");for (i=0;i<tam;i++){printf ("%d \n", v[i]);}system ("pause");return 0;}

Sou iniciante ainda. Mas ao meu ver, está tudo ok. Porém na hora de imprimir o vetor em ordem ordenada (crescente) ele imprime assim: 

Exemplo:

dados do vetor:

5

4

3

2

1

vetor ordenado:

4

5

3

2

1

deveria sair assim: 1 2 3 4 5 ...

 

Não sei se me entenderam... Mas se alguém puder me ajudar, agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Fabiani

 

 

O problema foi que você repetiu o contador i no segundo laço for da rotina de ordenação; era pra ter usado o contador j:

for (j=i+1;j<tam;j++)

Uma outra questão agora é o tipo de algoritmo usado. Este do seu código é o de ordenação bolha, e não de seleção. Neste método de ordenação, você vai considerar o vetor divido em duas partes: a primeira parte (mais à esquerda) terá os itens já ordenados e a segunda segue com os itens ainda a serem ordenados (mais à direita). Você vai estar sempre ampliando a parte ordenada e diminuindo a não-ordenada à medida que você avança com a troca dos elementos da parte não ordenada.

 

Dê uma lida sobre esse método de ordenação, procure compreender o que acontece (é importante), e veja se consegue modificar o seu atual. A variação é bem pequena.

 

 

 

[ ]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

@LNW Nossa, verdade, eu nem tinha notado, desatenção...

Obrigado pela dica, vou procurar sobre esses métodos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×