Luiz_Junior Postado Julho 14, 2005 Denunciar Share Postado Julho 14, 2005 É 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Julho 14, 2005 Denunciar Share Postado Julho 14, 2005 (editado) 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 Julho 19, 2005 por == Douplus == Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Luiz_Junior Postado Julho 17, 2005 Autor Denunciar Share Postado Julho 17, 2005 Ae valeu... Eu tirei do livro por isso que você reconheceu =PEu 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Luiz_Junior
É 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:
Bem espero que tenham entendido.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.