Jump to content
Fórum Script Brasil
  • 0

vetores


brunoslima23
 Share

Question

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

Edited by brunoslima23
gostaria de receber um aviso quando alguém responder
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...