Ir para conteúdo
Fórum Script Brasil
  • 0

vetores


brunoslima23

Pergunta

pessoal estou tentando desenvolver este programa estou com grande dificuldade alguém poderia me ajudar?

 Escreva um algoritmo que carregue um vetor de inteiros de 10 posições com os valores (10, 6, 5, 2, 1, 20, 17, 15, 100, 50), que coloque os valores deste vetor de em ordem crescente e em seguir, imprima estes valores.... fiz o seguinte  comando e acredito que esta errado

algoritmo "semnome"
// Função :
// Autor :
// Data : 25/09/2015
// Seção de Declarações
var
v:vetor[1..10] de inteiro
i: inteiro
num1,num2,num3,num4,num5,num6,num7,num8,num9,num10 : inteiro


  inicio
// Seção de Comandos
para  i <- 1 ate 10 faca
 escreval ("os numeros são",num1,num2,num3,num4,num5,num6,num7,num8,num9,num10)
 num1 <- 10
 num2 <- 6
 num3 <- 5
 num4 <- 2
 num5 <- 1
 num6 <- 20
 num7 <- 17
 num8 <- 15
 num9 <-100
 num10 <- 50
 fimPara
 
fimalgoritmo

Editado por brunoslima23
gostaria de receber um aviso quando alguém responder
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Este é um problema bastante conhecido, existem diversas formas de se ordernar um vetor. Como você ainda está começando na programação vou lhe dizer a maneira simples. Além disso a resolução a seguir independe da quantidade de inteiros no vetor. Vamos lá!
 

A ideia deste algoritimo é a seguinte, dado um vetor  v[0..n-1] com n numeros, eu vou analisar o subtrecho v[0..i], colocar em m o maior valor e depois colocar o valor m não ultima posicao, veja que quem faz isso é o segundo laco mais interno, então no primeiro loop do for mais externo o ultimo valor estara na posicao correta, no segundo loop o ultimo e o penultimo estaram na posicao correta e assim sucessivamente até que todo o vetor esteja ordenado.

/*Ordenação do vetor:*/
/*Esse laço mais externo ira controlar o subtrecho a ser ordenado.*/
  for(i = n-1; i > 0; i--){
    m = 0;
// Este laço vai decidir em qual posicao do subtrecho [0...i] esta o maior valor
    for(j = 1; j <= i; j++){
      if(vet[j] > vet[m])
        m = j;
    }
// Apos decidico qual a posicao m tem o maior valor é hora de substituir o ultimo valor do subtrecho pelo valor contido na posicao m
    tmp = vet;
    vet = vet[m];
    vet[m] = tmp;
  }
 
 

É fácil ver que se você quiser em ordem decrescente basta troca o '>' por '<'. Outra coisa, essa mais "hardcore" kk, é que no pior que caso esse tipo de ordenacao é da ordem de n*n, o que pra n muito grande vai explodir, por isso existem algoritimos de ordenacao muito mais eficientes como o mergesort, quicksort e outros.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...