Você está aqui: JavaScript ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca) |
Como usar a ordenação Selection Sort em JavaScript - Ordenação por Seleção em JavaScriptQuantidade de visualizações: 627 vezes |
Nesta dica mostrarei os detalhes da ordenação Selection Sort e como implementá-la em JavaScript. Também chamada de Ordenação por Seleção, esta ordenação classifica o array (ou vetor) de forma repetitiva procurando sempre o menor elemento na parte não ordenada do vetor e movendo-o para a parte já ordenada. Mencionei menor elemento para o caso da classificação em ordem crescente. Se for ordem decrescente então deveremos buscar sempre o maior elemento. Considerando o vetor [1, 6, 9, 3, 7, 8, 5, 2] nós teremos as iterações do laço externo e do laço interno, resultando nas seguintes trocas de elementos: Troca 1: 2 trocou de lugar com 6 Resultado: [1, 2, 9, 3, 7, 8, 5, 6] Troca 2: 3 trocou de lugar com 9 Resultado: [1, 2, 3, 9, 7, 8, 5, 6] Troca 3: 5 trocou de lugar com 9 Resultado: [1, 2, 3, 5, 7, 8, 9, 6] Troca 4: 6 trocou de lugar com 7 Resultado: [1, 2, 3, 5, 6, 8, 9, 7] Troca 5: 7 trocou de lugar com 8 Resultado: [1, 2, 3, 5, 6, 7, 9, 8] Troca 6: 8 trocou de lugar com 9 Resultado: [1, 2, 3, 5, 6, 7, 8, 9] Veja agora o código JavaScript completo para a ordenação Selection Sort. Coloquei comentários detalhados para facilitar o seu entendimento do algorítmo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <!doctype html> <html> <head> <title>Selection Sort em JavaScript</title> </head> <body> <script type="text/javascript"> // vamos criar um vetor de inteiros var valores = new Array(1, 6, 9, 3, 7, 8, 5, 2); // vamos mostrar o vetor na ordem original document.write("Vetor na ordem original: "); exibir_array(valores); // agora vamos usar a ordenação Selection Sort // para ordenar o vetor em ordem crescente ordenar_selection_sort(valores); // e agora vamos mostrar o vetor ordenado document.write("<br><br>Vetor ordenado: "); exibir_array(valores); // função que permite exibir o vetor function exibir_array(vetor){ for(var i = 0; i < vetor.length; i++){ document.write(vetor[i] + " "); } } // função que usa a ordenação Selection Sort para // ordenar um array de inteiros function ordenar_selection_sort(vetor){ // vamos obter o tamanho do vetor var n = vetor.length; // o laço externo percorre os elementos do vetor a partir // do primeiro elemento e vai até o penúltimo elemento for (var i = 0; i < n - 1; i++){ // encontramos o menor elemento do sub-vetor que ainda // não foi ordenado var indice_menor_elemento = i; // o laço interno começa no índice (i + 1) e vai // até a quantidade de elementos no vetor - 1 for (var j = i + 1; j < n; j++){ // o elemento atual (j) é menor que o elemento no // índice do menor elemento? if (vetor[j] < vetor[indice_menor_elemento]){ // atualizamos o índice do menor elemento indice_menor_elemento = j; } } // troca o menor elemento com o elemento no índice // i, no sub-vetor já ordenado if(vetor[indice_menor_elemento] != vetor[i]){ var temp = vetor[indice_menor_elemento]; vetor[indice_menor_elemento] = vetor[i]; vetor[i] = temp; } } } </script> </body> </html> Por apresentar laços aninhados (um laço externo e um interno), a ordenação Selection Sort não é recomendada para grandes conjuntos de dados, visto que sua complexidade de tempo é de O(n2). |
Link para compartilhar na Internet ou com seus amigos: |
JavaScript ::: Dicas & Truques ::: Recursão (Recursividade) |
JavaScript Avançado - Como remover todas as ocorrências de uma substring em uma string usando uma função recursivaQuantidade de visualizações: 168 vezes |
Esta dica contém um ótimo exercício de recursão. Trata-se de uma função JavaScript recursiva para remover todas as ocorrências de uma substring em uma string. Analise o código cuidadosamente e você conseguirá desenvolver várias funções de recursividade a partir dele. Veja o código JavaScript completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <html> <head> <title>Estudando JavaScript</title> </head> <body> <script type="text/javascript"> // função recursiva que remove todas as ocorrências // de uma substring em uma string function remover(string, substring){ // primeiro obtemos o índice da substring // dentro da string var indice = string.indexOf(substring); var resultado = ""; // interromper a recursividade? if(indice == -1){ return string; } else{ resultado += string.substring(0, indice) + remover(string.substring(indice + substring.length), substring); } return resultado; } // hora de testar a função recursiva var frase = "Ontem comprei duas camisas e uma calça"; document.writeln("Original: " + frase); frase = remover(frase, "duas"); document.writeln("<br>Nova frase: " + frase); </script> </body> </html> Ao executar este código nós teremos o seguinte resultado: Original: Ontem comprei duas camisas e uma calça Nova frase: Ontem comprei camisas e uma calça |
JavaScript ::: Dicas & Truques ::: Data e Hora |
Como retornar a diferença em dias entre duas datas usando JavaScriptQuantidade de visualizações: 18537 vezes |
Nesta dica mostrarei como podemos usar a linguagem JavaScript para calcular a quantidade de dias, ou seja, a diferença de dias entre duas datas. Note que o truque é subtrair um objeto Date de outro objeto Date. Veja o código JavaScript completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Estudos JavaScript</title> </head> <body> <script type="text/javascript"> function diferencaDias(data1, data2){ var dif = Date.UTC(data1.getYear(),data1.getMonth(),data1.getDate(),0,0,0) - Date.UTC(data2.getYear(),data2.getMonth(),data2.getDate(),0,0,0); return Math.abs((dif / 1000 / 60 / 60 / 24)); } // datas no formato ano/mês/dia document.write("A diferença de dias é: " + diferencaDias(new Date(2007, 0, 10), new Date(2007, 0, 20)) + " dias."); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: A diferença de dias é: 10 dias. |
JavaScript ::: Fundamentos da Linguagem ::: Estruturas de Controle |
JavaScript para leigos - Como usar o laço while da linguagem JavaScriptQuantidade de visualizações: 7160 vezes |
O laço while (também chamado de loop ou laço enquanto) da linguagem JavaScript é usado quando queremos repetir uma instrução ou um grupo de instruções ENQUANTO uma condição for satisfeita. Veja sua sintáxe:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- while(condição){ // uma instrução ou grupo de instruções } A condição pode ser qualquer expressão que resulte em um valor boolean (true ou false). Note também que o teste condicional é feito antes de cada iteração (repetição) do laço. Isso faz com que este laço, dependendo da condição inicial, possa nunca ser executado. Veja um trecho de código no qual usamos o laço while para contar de 0 até 10: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <html> <head> <title>Estudos JavaScript</title> </head> <body> <script type="text/javascript"> var i = 0; while(i <= 10){ document.write(i + "<br>"); i++; } </script> </body> </html> Ao executarmos este código teremos o seguinte resultado: 0 1 2 3 4 5 6 7 8 9 10 Veja que declaramos uma variável de controle i e a inicializamos com o valor 0. Na entrada do laço nós verificamos se seu valor é menor ou igual a 10. Como esta condição é satisfeita, o laço é executado pela primeira vez. No corpo do laço nós exibimos o valor da variável de controle e a incrementamos em 1. Agora o ciclo se repete. A condição é testada novamente. Se esta for satisfeita, o código entra no corpo do laço novamente e assim por diante. Veja agora como modificar o laço while anterior para exibir os números de 10 até 0: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <html> <head> <title>Estudos JavaScript</title> </head> <body> <script type="text/javascript"> var i = 10; while(i >= 0){ document.write(i + "<br>"); i--; } </script> </body> </html> Agora o resultado do código será: 10 9 8 7 6 5 4 3 2 1 0 Esta dica foi escrita e testada no Internet Explorer 8 e Firefox 3.6. |
Desafios, Exercícios e Algoritmos Resolvidos de JavaScript |
Veja mais Dicas e truques de JavaScript |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |