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

Ordenando Arrays


Luiz_Junior

Pergunta

É galera eu não entendi muito esse código de ordenamento de arrays, alguém poderia me explicar ele direito? Poderiam colocar um outro código também com outro números mas que faça a mesma função, só para mim relacionar.

O Código:

#include <iostream>

#include <iomanip>

using namespace std;

int main ()

{

const int arraySize = 10;

int a[ arraySize ] = {2, 6 ,4 ,8 ,10, 12, 89, 68, 45, 37 };

int i, hold;

cout<<" Itens de dados na ordem original \n";

for ( i = 0; i < arraySize; i++ )

    cout<< setw(4) << a;

for ( int pass = 0; pass < arraySize -1; pass ++ )

    for ( i = 0; i < arraySize - 1; i++ )

        if ( a[ i ] > a[ i + 1 ] )

        {

  hold = a[ i ];

  a[ i ] = a[ i + 1 ];

  a[ i + 1 ] = hold;

        }

cout<< "\nItens de dados em ordem ascendente\n";

for ( i = 0; i<arraySize; i++ )

    cout << setw( 4 ) << a;

cout<< endl;

return 0;

}

Bem espero que tenham entendido.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Bem, é um método de ordenação que me parece familiar, parece o Bubble Sort(se não for), não tenho como conferir no momento. Mas, concentremo-nos em analisar o código:

   #include <iostream>
   #include <iomanip>
   using namespace std;
// Sem comentários... Na função principal, temos as declarações das variáveis, e finalmente o que nos interessa:
for ( i = 0; i < arraySize; i++ )        // Mostra o array 
    cout<< setw(4) << a[i];              // na ordem original.

for ( int pass = 0; pass < arraySize -1; pass ++ )    // Loop que
                                                     // repetirá 8
                                                    // vezes.

    for ( i = 0; i < arraySize - 1; i++ )      // Em cada repetição
                                              // indicada pelo loop
                                                // loop anterior,
                                                // haverá 8
                                               // repetições.

        if ( a[ i ] > a[ i + 1 ] )     // Compara o valor da posição
        {                              // original com o valor da 
                                       //próxima posição do array.
// Se for maior, inverte os valores, dexando o valor menor na
// posição indicada por a[i], e o valor maior na posição 
//indicada por a[i+1].
  hold = a[ i ];
  a[ i ] = a[ i + 1 ];
  a[ i + 1 ] = hold;
        }
Nosso array a, tem os elementos: "2, 6 ,4 ,8 ,10, 12, 89, 68, 45, 37", trabalharemos somente com: "arraysize = 4", "a[arraysize] = {2, 6, 4, 8, 1}". Escolhi esses valores para fazer uma melhor representação. Represenando:
 
Primeira repetição:
   compara: 2, 6;
   2 < 6;
   Então não faça nada.
   
   Compara 6, 4;
   6 > 4;
   Então:
   hold = 6;
   a[i] = a[i+1]; // 4
   a[i+1] = hold; // 6
---PAUSA---
Nosso array está: 2, 4, 6, 8 e 1. Prosseguindo...
   Compara 6, 8;
   6 < 8;
   Não faça nada.

   Compara 8, 1;
   8 > 1;
   Então:
   hold = a[i];  // 8
   a[i] = a[i+1]; // 1
   a[i+1] = hold;   // 8
Nosso array: 2, 4, 6, 1 e 8. ontinuando:
   SEGUNDA REPETIÇÃO:
   2 < 4, não faça nada.
   4 < 6, não faça nada.
   6 > 1. Substituindo: a[i] = 1; a[i+1] = 6
   6 < 8, não faça nada.

Nosso array( a ): 2, 4, 1, 6 e 8.

Bem, acho que já deu para ter uma idéia, o primeiro loop repetirá mais 2 vezes, quando o valor "1" finalmente chegar à primeira posição do array, é um método um pouco demorado, mas eficaz, como você perceberá ao executar o programa.

OBS.: Editei o post porque os comentéarios ficaram desorganizados nas linhas, quando você está montando o post não aparenta nenhuma desoganização, mas quando você posta..

OBS².: Editei denovo. O visualizar também engana a gente ;-)

Até mais!

Editado por == Douplus ==
Link para o comentário
Compartilhar em outros sites

  • 0

Ae valeu... Eu tirei do livro por isso que você reconheceu =P

Eu entendi perfeitamente, aquela parte ali do IF q foi a chave para mim entender.

if ( a[ i ] > a[ i + 1 ] )    // Compara o valor da posição original

      {                                  // com o valor da próxima posição do array.

Entra no MSN de vez enquanto, pra gente bater um papo lá e discutir.

Falow! biggrin.gif

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
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...