Ir ao conteúdo
  • Cadastre-se

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


Fabiani
Ir à solução Resolvido por LNW,

Posts recomendados

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.

Link para o comentário
Compartilhar em outros sites

  • Solução

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

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...