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: 566 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 ::: NumPy Python Library (Biblioteca Python NumPy) ::: Passos Iniciais

Machine Learning para iniciantes - Como usar a biblioteca NumPy em seus programas Python

Quantidade de visualizações: 2118 vezes
Criada em 2005 por Travis Oliphant, a biblioteca NumPy é uma biblioteca Python que, embora escrita parcialmente em código Python, possui trechos de código C ou C++, principalmente as partes que requerem processamento ou computação mais veloz.

Estudiosos, entusiastas e desenvolvedores de soluções envolvendo Data Science, Deep Learning, Machine Learning e Inteligência Artificial (IA) em geral, encontram nessa biblioteca muitas funções úteis para a criação e manipulação de vetores e matrizes, além de funções para trabalhar no domínio de algebra linear e transformação fourier.

A biblioteca NumPy (Numerical Python) é um projeto open source e pode ser usada livremente em qualquer programa Python. Uma das razões para a sua adoção é a substituição das listas Python pelos vetores e matrizes NumPy, já que estes últimos são 50 vezes mais rápidas que as listas Python, que muitas vezes fazem o papel de arrays.

Minha instalação do Python já possui a biblioteca NumPy?

A melhor forma de descobrir se a NumPy já está disponível para os seus códigos Python é rodando o seguinte trecho de código:

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

# importamos a bibliteca NumPy
import numpy as np
 
def main():
  # construimos um vetor de cinco elementos
  vetor = np.array([20, 3, 87, 4, 120])
  # imprimimos seu conteúdo
  print(vetor)

if __name__== "__main__":
  main()

Se você vir o resultado abaixo:

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

[ 20   3  87   4 120]

então sua instalação do Python já contém a biblioteca NumPy e você está pronto(a) para experimentar as demais dicas e truques dessa seção.

Porém, se você ainda não tiver a NumPy, a seguinte mensagem de erro será exibida:

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

Exception has occurred: ModuleNotFoundError
No module named 'numpy'
  File "C:\estudos_python\estudos.py", line 2, in <module>
    import numpy as np

Não se desespere. Basta abrir uma janela de prompt e disparar o comando abaixo:

pip install numpy

Aguarde alguns minutos para que o Pip baixe e instale a biblioteca. Em seguida tente executar o código acima novamente.

Agora é só aproveitar tudo que a biblioteca NumPy tem a nos oferecer.


Python ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas

Como calcular a equação reduzida da reta em Python dados dois pontos pertencentes à reta

Quantidade de visualizações: 2832 vezes
Nesta dica de Python veremos como calcular a equação reduzida da reta quando temos dois pontos pertencentes à esta reta. Não, nessa dica não vamos calcular a equação geral da reta, apenas a equação reduzida. Em outras dicas do site você encontra como como isso pode ser feito.

Para relembrar: a equação reduzida da reta é y = mx + n, em que x e y são, respectivamente, a variável independente e a variável dependente; m é o coeficiente angular, e n é o coeficiente linear. Além disso, m e n são números reais. Com a equação reduzida da reta, é possível calcular quais são os pontos que pertencem a essa reta e quais não pertencem.

Vamos começar então analisando a seguinte figura, na qual temos dois pontos que pertencem à uma reta:



Note que a reta da figura passa pelos pontos A(5, 5) e B(9, 2). Então, uma vez que já temos os dois pontos, já podemos calcular a equação reduzida da reta. Veja o código Python completo para esta tarefa:

----------------------------------------------------------------------
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 ler as coordenadas do primeiro ponto
  x1 = float(input("Coordenada x do primeiro ponto: "))
  y1 = float(input("Coordenada y do primeiro ponto: "))
  
  # vamos ler as coordenadas do segundo ponto
  x2 = float(input("Coordenada x do segundo ponto: "))
  y2 = float(input("Coordenada y do segundo ponto: "))
 
  sinal = "+"
  # vamos calcular o coeficiente angular da reta
  m = (y2 - y1) / (x2 - x1)
  # vamos calcular o coeficiente linear
  n = y1 - (m * x1)
 
  # coeficiente linear menor que zero? O sinal será negativo
  if (n < 0):
    sinal = "-"
    n = n * -1
  
  # mostra a equação reduzida da reta
  print("Equação reduzida: y = %.2fx %s %.2f" % (m, sinal, n))

if __name__== "__main__":
  main()

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

Coordenada x do primeiro ponto: 5
Coordenada y do primeiro ponto: 5
Coordenada x do segundo ponto: 9
Coordenada y do segundo ponto: 2
Equação reduzida: y = -0,75x + 8,75

Para testarmos se nossa equação reduzida da reta está realmente correta, considere o valor 3 para o eixo x da imagem acima. Ao efetuarmos o cálculo:

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

>> y = (-0.75 * 3) + 8.75
y = 6.5000

temos o valor 6.5 para o eixo y, o que faz com que o novo ponto caia exatamente em cima da reta considerada na imagem.


Python ::: Dicas & Truques ::: Lista (List)

Python para iniciantes - Como inserir itens em posições específicas de uma lista usando o método insert()

Quantidade de visualizações: 10678 vezes
Nesta dica eu mostrarei como usar a função insert() do objeto List da linguagem Python para inserir um novo elemento em uma determinada posição da lista. A função recebe o índice no qual o elemento será inserido e o seu valor.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
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():
  # cria uma lista de inteiros
  valores = [2, 5, 12, 2, 3, 32, 18]
  print("Valores na lista:", valores, "\n")

  # valor a ser inserido
  valor = int(input("Informe um inteiro: "))
  # índice a ser inserido (começa em 0)
  pos = int(input("Informe uma posicao: "))
   
  # insere o valor na posição determinada
  valores.insert(pos, valor)
 
  # exibe os valores da lista novamente
  print("Valores na lista:", valores, "\n")
  
if __name__== "__main__":
  main()

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

Valores na lista: [2, 5, 12, 2, 3, 32, 18]
Informe um inteiro: 45
Informe uma posicao: 2
Valores na lista: [2, 5, 45, 12, 2, 3, 32, 18]


Vamos testar seus conhecimentos em

Vigas a flexão simples: seções retangulares

As ações permanentes atuam na estrutura durante toda a sua vida útil, podendo apresentar poucas variações. Em vigas de concreto armado, essas ações normalmente são os carregamentos de paredes, das lajes apoiadas sobre elas e do seu próprio peso.

Imagine uma viga de concreto V (15x40) que sustenta uma parede com 18cm de espessura e suporta duas lajes. O pé-direito da edificação é de 3,00m e tanto a viga que sustenta a parede quanto a no topo desta têm altura de 40cm. Considere que as reações de apoio das lajes nessa viga são de 3,55kN/m e 5,40kN/m.

Nesse cenário, qual é o carregamento dessa viga?

A) 10,45kN/m.

B) 11,84kN/m.

C) 13,89kN/m.

D) 15,39kN/m.

E) 16,15kN/m.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fundações

Fundações profundas

A infraestrutura de fundação de qualquer empreendimento desempenha papel importante no suporte de cargas decorrentes do peso próprio da superestrutura e de sua utilização. As fundações são convencionalmente separadas em dois grandes grupos: superficiais e profundas.

Com base no que foi exposto, assinale com V (verdadeiro) ou F (falso) as proposições a seguir.

( ) Estaca escavada mecanicamente é a estaca com a qual um operador, lançando mão de um trado manual, perfura o solo. Isso é feito exclusivamente com revestimento.

( ) Estacas são elementos de fundação profunda com auxílio de ferramentas ou equipamentos. O procedimento pode ser feito por cravação à percussão, prensagem, vibração ou escavação, ou ainda de forma mista, envolvendo mais de um desses processos.

( ) O elemento que transmite a carga proveniente da superestrutura ao terreno pela resistência de ponta ou resistência do fuste, ou ainda pela combinação das duas formas, é classificado como estaca.

Assinale a alternativa que indica, de cima para baixo, a ordem correta.

A) V, V, V.

B) F, F, F.

C) V, F, V.

D) F, V, F.

E) F, V, V.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Número de Froude

O número de Froude (Fr) é um coeficiente adimensional, frequentemente utilizado na hidráulica de condutos abertos para determinar a classificação do regime que o escoamento livre apresenta. Quando o Fr é igual a 1, o regime é classificado como crítico; com Fr > 1, o regime é supercrítico; e com Fr < 1, o regime é subcrítico.

Sobre esta classificação afirma-se que:

A) No regime crítico há equílibrio de forças e a velocidade é menor que a celeridade.

B) No regime supercrítico, o escoamento é mais influenciado pelas forças gravitacionais.

C) No regime supercrítico, o escoamento é regido pelas energias cinéticas e inerciais.

D) No regime subcrítico ou torrencial, as forças gravitacionais regem o escoamento.

E) No regime crítico não há equilíbrio entre as energias que influenciam o escoamento.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Analise o seguinte código JavaScript

var a = new Array();
var b = new Array();
a[1] = 3;
b[2] = 5;
a = b;

Quais valores estão contidos em a[1] e a[2] depois da execução deste código?

A) a[1] é 3 e a[2] é 5.

B) a[1] é indefinido e a[2] é 5.

C) ambos a[1] e a[2] são indefinidos.

D) A execução deste código provoca um erro.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Responsabilidade civil no código de defesa do consumidor

O fornecedor e o prestador de serviço estarão livres do dever de indenizar caso não haja dano reparável e ficar comprovado que:

A) a culpa foi exclusiva do consumidor ou de terceiro.

B) a culpa foi do fornecedor.

C) ninguém teve culpa.

D) todos tiveram culpa.

E) não importa quem teve culpa.
Verificar Resposta Estudar Cards Todas as Questões

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: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



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