Você está aqui: Python ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca)

Como usar a ordenação Selection Sort em Python - Ordenação por Seleção em Python

Quantidade de visualizações: 623 vezes
Nesta dica mostrarei os detalhes da ordenação Selection Sort e como implementá-la em Python. 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 Python 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)
----------------------------------------------------------------------

# função principal do programa
def main():
  # vamos criar um vetor de inteiros
  valores = [1, 6, 9, 3, 7, 8, 5, 2]
    
  # vamos mostrar o vetor na ordem original
  print("Vetor na ordem original: {0}".format(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
  print("Vetor ordenado: {0}".format(valores))
  

# função que usa a ordenação Selection Sort para
# ordenar um array de inteiros
def ordenar_selection_sort(vetor):
  # vamos obter o tamanho do vetor    
  n = len(vetor)
 
  # o laço externo percorre os elementos do vetor a partir
  # do primeiro elemento e vai até o penúltimo elemento
  for i in range(0, n - 1):
    # encontramos o menor elemento do sub-vetor que ainda
    # não foi ordenado
    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 j in range(i + 1, n):
      # 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]:
      temp = vetor[indice_menor_elemento]
      vetor[indice_menor_elemento] = vetor[i]
      vetor[i] = temp

if __name__== "__main__":
  main()

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:

Python ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o seno de um número ou ângulo em Python usando a função sin() do módulo Math

Quantidade de visualizações: 1260 vezes
Em geral, quando falamos de seno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função seno disponível nas linguagens de programação para calcular o seno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria.

No entanto, é sempre importante entender o que é a função seno. Veja a seguinte imagem:



Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles.

Assim, o seno é a razão entre o cateto oposto (oposto ao ângulo theta) e a hipotenusa, ou seja, o cateto oposto dividido pela hipotenusa. Veja a fórmula:

\[\text{Seno} = \frac{\text{Cateto oposto}}{\text{Hipotenusa}} \]

Então, se dividirmos 20 por 36.056 (na figura eu arredondei) nós teremos 0.5547, que é a razão entre o cateto oposto e a hipotenusa (em radianos).

Agora, experimente calcular o arco-cosseno de 0.5547. O resultado será 0.9828 (em radianos). Convertendo 0.9828 radianos para graus, nós obtemos 56.31º, que é exatamente o ângulo em graus entre o cateto oposto e a hipotenusa na figura acima.

Pronto! Agora que já sabemos o que é seno na trigonometria, vamos entender mais sobre a função sin() da linguagem Python. Este método, que faz parte do módulo Math, recebe um valor numérico e retorna um valor, também numérico) entre -1 até 1 (ambos inclusos). Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# importamos a biblioteca Math
import math as math
  
def main():
  print("Seno de 0 = ", math.sin(0))
  print("Seno de 1 = ", math.sin(1))
  print("Seno de 2 = ", math.sin(2))
  
if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

Seno de 0 = 0.0
Seno de 1 = 0.8414709848078965
Seno de 2 = 0.9092974268256817

Note que calculamos os senos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função seno mostrada abaixo:




Python ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercício Resolvido de Python - Como testar se um ano é bissexto em Python - Um programa que lê um ano com quatro dígitos e informa se ele é bissexto ou não

Quantidade de visualizações: 1364 vezes
Pergunta/Tarefa:

Chama-se ano bissexto o ano ao qual é acrescentado um dia extra, ficando ele com 366 dias, um dia a mais do que os anos normais de 365 dias, ocorrendo a cada quatro anos (exceto anos múltiplos de 100 que não são múltiplos de 400). Isto é feito com o objetivo de manter o calendário anual ajustado com a translação da Terra e com os eventos sazonais relacionados às estações do ano. O último ano bissexto foi 2012 e o próximo será 2016.

Um ano é bissexto se ele for divisível por 4 mas não por 100, ou se for divisível por 400.

Escreva um programa Python que pede ao usuário um ano com quatro dígitos e informa se ele é bissexto ou não.

Sua saída deverá ser parecida com:

Informe o ano: 2024
O ano informado é bissexto.
Resposta/Solução:

Veja a resolução comentada deste exercício usando Python:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# método principal
def main():
  # vamos solicitar que o usuário informe um ano
  ano = int(input("Informe o ano: "))
	
  # vamos verificar se o ano informado é bissexto
  if(((ano % 4 == 0) and (ano % 100 != 0)) or (ano % 400 == 0)):
    print("\nO ano informado é bissexto.\n")
  else:
    print("\nO ano informado não é bissexto.\n");

if __name__== "__main__":
  main()



Python ::: Python para Engenharia ::: Cálculo Diferencial e Integral

Como calcular o limite de uma função usando Python e a biblioteca Sympy - Python para Engenharia

Quantidade de visualizações: 4289 vezes
Como calcular o limite de uma função usando Python e a biblioteca Sympy

Citando a Wikipédia: Na matemática, o limite de uma função é um conceito fundamental em cálculo e análise sobre o comportamento desta função quando próxima a um valor particular de sua variável independente. Informalmente, diz-se que __$\text{L}__$ é o limite da função __$\text{f(x)}__$ quando __$\text{x}__$ tende a __$\text{p}__$, escreve-se

\[ \lim_{x \to p} f(x) = L \]

quando __$\text{f(x)}__$ está arbitrariamente próximo de __$\text{L}__$ para todo __$\text{x}__$ suficientemente próximo de __$\text{p}__$. O conceito de limite pode ser estendido para funções de varias variáveis.

A biblioteca SymPy da linguagem Python facilita muito o trabalho de se calcular limites. É claro que é sempre uma boa idéia saber calcular o limite de uma função "na mão" mesmo, até para sabermos se nosso código Python está correto. No entanto, em algumas situações, lançar mão da função limit() da SymPy nos poupará um tempo incrível.

Dessa forma, a sintáxe para o cálculo do limite na SymPy segue o padrão limit(função, variável, ponto). Então, se quisermos calcular o limite de f(x) com x tendendo a 0, só precisamos fazer limit(f, x, 0).

Vamos colocar esse conhecimento em prática então? Veja o seguinte limite:

\[ \lim_{x \to 1} 5x^2 + 2x \]

Agora observe o código Python completo que calcula e retorna o limite desta função:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# vamos importar a biblioteca SymPy
from sympy import * 

def main():
  # vamos definir o símbolo x
  x = symbols("x")
  # definimos a função
  f = (5 * x ** 2) + (2 * x) 
  # finalmente calculamos o limite
  limite = limit(f, x, 1)
  # e mostramos o resultado
  print("O limite da função é: %f." % limite)

if __name__== "__main__":
  main()

Ao executar este código nós teremos o seguinte resultado:

O limite da função é: 7.000000.

Logo, o limite da função no ponto __$\text{x}__$ = 1 vale 7, em outras palavras, 7 é o valor que __$f(5x^2 + 2x)__$ deveria ter em 1 para ser contínua nesse ponto.

Vamos ver mais um exemplo? Observe o seguinte limite:

\[ \lim_{x \to 1} \left(\frac{x^2 - 1}{x - 1}\right) \]

Aqui temos um situação interessante. Note que temos que fazer uma manipulação algébrica na expressão, fatorando os termos. Porém, mesmo em situações assim o método limit() da Sympy consegue interpretar a expressão simbólica corretamente e nos devolver o limite esperado. Veja o código Python completo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# vamos importar a biblioteca SymPy
from sympy import * 

def main():
  # vamos definir o símbolo x
  x = symbols("x")
  # definimos a função
  f = (x ** 2 - 1) / (x - 1) 
  # finalmente calculamos o limite
  limite = limit(f, x, 1)
  # e mostramos o resultado
  print("O limite da função é: %f." % limite)

if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

O limite da função é: 2.000000.


Desafios, Exercícios e Algoritmos Resolvidos de Python

Veja mais Dicas e truques de Python

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware 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 funcionalidadesControle 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
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 67 usuários muito felizes estudando em nosso site.