Python ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca) |
Python Insertion Sort - Como ordenar um vetor de inteiros usando a ordenação Insertion Sort (Ordenação por Inserção)Quantidade de visualizações: 4294 vezes |
|
Nesta dica veremos como implementar a ordenação Insertion Sort, Insertion-Sort, ou Ordenação por Inserção na linguagem Python. A ordenação Insertion Sort, Insertion-Sort, ou Ordenação por Inserção, possui uma complexidade de tempo de execução igual à ordenação Bubble Sort (Ordenação da Bolha), ou seja, O(n2). Embora mais rápido que o Bubble Sort, e ser um algorítmo de ordenação quadrática, a ordenação Insertion Sort é bastante eficiente para problemas com pequenas entradas, sendo o mais eficiente entre os algoritmos desta ordem de classificação, porém, nunca recomendada para um grande conjunto de dados. A forma mais comum para o entendimento da ordenação Insertion Sort é compará-la com a forma pela qual algumas pessoas organizam um baralho num jogo de cartas. Imagine que você está jogando cartas. Você está com as cartas na mão e elas estão ordenadas. Você recebe uma nova carta e deve colocá-la na posição correta da sua mão de cartas, de forma que as cartas obedeçam à ordenação. A cada nova carta adicionada à sua mão de cartas, a nova carta pode ser menor que algumas das cartas que você já tem na mão ou maior, e assim, você começa a comparar a nova carta com todas as cartas na sua mão até encontrar sua posição correta. Você insere a nova carta na posição correta, e, novamente, a sua mão é composta de cartas totalmente ordenadas. Então, você recebe outra carta e repete o mesmo procedimento. Então outra carta, e outra, e assim por diante, até não receber mais cartas. Esta é a ideia por trás da ordenação por inserção. Percorra as posições do vetor (array), começando com o índice 1 (um). Cada nova posição é como a nova carta que você recebeu, e você precisa inseri-la no lugar correto no sub-vetor ordenado à esquerda daquela posição. Vamos ver a implementação na linguagem Python agora? Observe o seguinte código, no qual temos um vetor de inteiros com os elementos {4, 6, 2, 8, 1, 9, 3, 0, 11}:
# método que permite ordenar o vetor de inteiros
# usando a ordenação Insertion Sort
def insertionSort(vetor):
# percorre todos os elementos do vetor começando
# pelo segundo elemento
for i in range(len(vetor)):
atual = vetor[i] # o valor atual a ser inserido
# começa a comparar com a célula à esquerda de i
j = i - 1
# enquanto vetor[j] estiver fora de ordem em relação
# a atual
while((j >= 0) and (vetor[j] > atual)):
# movemos vetor[j] para a direita e decrementamos j
vetor[j + 1] = vetor[j]
j = j - 1
# colocamos atual em seu devido lugar
vetor[j + 1] = atual
# função principal do programa
def main():
# cria uma lista de inteiros
valores = [4, 6, 2, 8, 1, 9, 3, 0, 11]
# exibimos o vetor na ordem original
print("Ordem original:\n")
for i in range(len(valores)):
print(valores[i], end = " ")
# vamos ordenar o vetor agora
insertionSort(valores)
# exibimos o vetor ordenado
print("\n\nOrdenado:\n")
for i in range(len(valores)):
print(valores[i], end = " ")
if __name__== "__main__":
main()
Ao executar este código Python nós teremos o seguinte resultado: Sem ordenação: 4 6 2 8 1 9 3 0 11 Ordenada usando Insertion Sort: 0 1 2 3 4 6 8 9 11 |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Um programa Java que gera um número randômico na faixa de 20 a 40 (valores inclusos) e exibe o seno, cosseno e tangenteQuantidade de visualizações: 655 vezes |
|
Pergunta/Tarefa: Escreva um programa Java que gera um número randômico na faixa de 20 a 40 (valores inclusos) e exibe o seno, cosseno e tangente do número aleatório gerado. Sua saída deve ser parecida com: O número gerado foi: 26 O seno do número gerado é: 0.7625584504796028 O cosseno do número gerado é: 0.6469193223286404 A tangente do número gerado é: 1.1787535542062797 O número gerado foi: 40 O seno do número gerado é: 0.7451131604793488 O cosseno do número gerado é: -0.6669380616522619 A tangente do número gerado é: -1.117214930923896 Veja a resolução comentada deste exercício usando Java:
package estudos;
import java.util.Random;
public class Estudos {
public static void main(String[] args) {
// variáveis usadas na resolução do problema
int numero_rand;
double seno, cosseno, tangente;
// vamos gerar o número aleatório na faixa 20-40
Random rand = new Random();
numero_rand = rand.nextInt(21) + 20;
System.out.println("O número gerado foi: " + numero_rand);
// vamos gerar o seno do número sorteado
seno = Math.sin(numero_rand);
System.out.println("O seno do número gerado é: " + seno);
// vamos gerar o cosseno do número sorteado
cosseno = Math.cos(numero_rand);
System.out.println("O cosseno do número gerado é: " + cosseno);
// agora a tangente do número sorteado
tangente = Math.tan(numero_rand);
System.out.println("A tangente do número gerado é: " + tangente);
}
}
|
Python ::: PyQt GUI Toolkit ::: QMainWindow |
Como centralizar uma janela QMainWindow do PyQtQuantidade de visualizações: 434 vezes |
|
Nesta dica mostrarei como podemos centralizar a janela principal de nossa aplicação PyQt. Note que esta janela principal, na maioria das vezes, é representada por uma instância da classe QMainWindow. Veja o código completo para o exemplo, já atualizado para o PyQt6:
# vamos importar os módulos necessários
import sys
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import *
# vamos criar uma classe que herda de QMainWindow
class JanelaPrincipal(QMainWindow):
# construtor da classe
def __init__(self):
super().__init__()
# definimos o título da janela
self.setWindowTitle("Cadastro de Produtos")
# vamos definir as dimensões da janela
self.resize(600, 420)
# vamos obter a geometria do frame da nossa janela
geometria_frame = self.frameGeometry()
# acessamos a geometria da monitor e obtemos seu centro
ponto_central = self.screen().availableGeometry().center()
# movemos o retângulo obtido anteriormente para o centro da tela
geometria_frame.moveCenter(ponto_central)
# e finalmente movemos nossa janela para este ponto
self.move(geometria_frame.topLeft())
if __name__== "__main__":
# cria a aplicação
app = QApplication(sys.argv)
# cria a janela principal e a coloca visível
janela_principal = JanelaPrincipal()
janela_principal.show()
# executa a aplicação
app.exec()
|
PHP ::: Dicas & Truques ::: Strings e Caracteres |
PHP para iniciantes - Como contar a quantidade de palavras em uma string usando as funções explode() e count() do PHPQuantidade de visualizações: 3 vezes |
|
Em algumas situações nós precisamos obter a quantidade de palavras em uma frase ou texto. Para isso nós podemos combinar as funções explode() e count() da linguagem PHP. É importante, antes de efetuarmos esta tarefa, nos certificarmos de que a string sendo analisada não possui espaços em excesso. Se esse for o caso, veja nossas dicas e truques a respeito da remoção de espaços em excesso de uma frase ou texto. Veja o código completo para o exemplo:
<html>
<head>
<title>Estudando PHP</title>
</head>
<body>
<?php
$frase = "Gosto de programar em PHP";
$palavras = explode(" ", $frase);
echo "A frase \"" . $frase . "\" contém " .
count($palavras) . " palavras";
?>
</body>
</html>
Ao executarmos este código nós teremos o seguinte resultado: A frase "Gosto de programar em PHP" contém 5 palavras |
Nossas 20 dicas & truques de programação mais populares |
|
PHP - Como obter o caminho da raiz do site usando a variável global $_SERVER['DOCUMENT_ROOT'] do PHP |
Você também poderá gostar das dicas e truques de programação abaixo |
|
AutoCAD Civil 3D - Como criar pontos COGO no AutoCAD Civil 3D Java - Como remover itens repetidos de uma ArrayList usando um objeto da classe LinkedHashSet do Java C - Exercício Resolvido de C - Como ler um número inteiro e imprimir seu sucessor e seu antecessor em C |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





