Faça um código para gerar 30 números aleatórios (entre 1 e 100) e armazenar em um vetor. Apresente os números gerados na tela e depois organize o vetor com um método de ordenação da sua escolha. Apresente o vetor ordenado e implemente o método de busca binária.
Passo 1
Beleza, vamos resolver esse exercício juntos! A questão pede para a gente escrever um código que:
- Gere 30 números aleatórios entre 1 e 100 e armazene em um vetor.
- Exiba esses números na tela.
- Ordene o vetor usando um método de ordenação de nossa escolha.
- Mostre o vetor ordenado.
- Implemente o método de busca binária.
Para isso, vamos precisar conhecer alguns conceitos básicos de programação, como geração de números aleatórios, vetores (ou listas), métodos de ordenação (vamos usar o Bubble Sort) e a Busca Binária.
Passo 2
Primeiro, vamos gerar 30 números aleatórios entre 1 e 100 e armazená-los em um vetor. Para isso, vamos usar a linguagem Python e sua biblioteca
random
, que facilita a geração de números aleatórios.Aqui está como fazemos isso:
import random
# Gerar 30 números aleatórios entre 1 e 100
vetor = [random.randint(1, 100) for _ in range(30)]
Explicação: Estamos importando o módulo
random
e usando uma list comprehension para criar uma lista chamada vetor
com 30 números aleatórios entre 1 e 100 utilizando random.randint(1, 100)
.Passo 3
Agora, vamos exibir os números gerados na tela. Podemos simplesmente imprimir o vetor:
print("Números gerados:", vetor)
Explicação: A função
print
mostra na tela a string “Números gerados:” seguida dos números armazenados no vetor.Passo 4
Vamos ordenar o vetor usando o método Bubble Sort. O Bubble Sort é um algoritmo simples que compara elementos adjacentes e os troca de posição se estiverem na ordem errada. Repetimos esse processo até que o vetor esteja completamente ordenado.
Aqui está como implementamos o Bubble Sort:
def bubble_sort(vetor):
n = len(vetor)
for i in range(n):
for j in range(0, n-i-1):
if vetor[j] > vetor[j+1]:
vetor[j], vetor[j+1] = vetor[j+1], vetor[j]
return vetor
# Ordenar o vetor
vetor_ordenado = bubble_sort(vetor.copy())
Explicação: Definimos uma função
bubble_sort
que recebe o vetor e realiza as comparações e trocas necessárias. Usamos vetor.copy()
para manter o vetor original intacto e armazenamos o vetor ordenado em vetor_ordenado
.Passo 5
Agora, vamos exibir o vetor ordenado:
print("Vetor ordenado:", vetor_ordenado)
Explicação: Assim como antes, usamos a função
print
para mostrar o vetor já ordenado.Passo 6
Por fim, vamos implementar a Busca Binária. A Busca Binária é um método eficiente para encontrar um elemento em um vetor ordenado, dividindo o espaço de busca pela metade a cada passo.
Aqui está como implementamos a Busca Binária:
def busca_binaria(vetor, alvo):
esquerda = 0
direita = len(vetor) - 1
while esquerda <= direita:
meio = (esquerda + direita) // 2
if vetor[meio] == alvo:
return meio # Retorna o índice onde o alvo está
elif vetor[meio] < alvo:
esquerda = meio + 1
else:
direita = meio - 1
return -1 # Retorna -1 se o alvo não for encontrado
# Exemplo de busca
alvo = int(input("Digite o número que você quer buscar: "))
indice = busca_binaria(vetor_ordenado, alvo)
if indice != -1:
print(f"Número {alvo} encontrado no índice {indice}.")
else:
print(f"Número {alvo} não encontrado no vetor.")
Explicação: Definimos a função
busca_binaria
que recebe o vetor ordenado e o número que queremos encontrar (alvo
). A função retorna o índice onde o número está localizado ou -1 se não for encontrado. Solicitamos ao usuário que digite o número a ser buscado e exibimos o resultado da busca.Passo 7
vetor = [random.randint(1, 100) for _ in range(30)]
print(“Números gerados:”, vetor)
print(“Números gerados:”, vetor)
Passo 8
def bubble_sort(vetor):
n = len(vetor)
for i in range(n):
for j in range(0, n-i-1):
if vetor[j] > vetor[j+1]:
vetor[j], vetor[j+1] = vetor[j+1], vetor[j]
return vetor
n = len(vetor)
for i in range(n):
for j in range(0, n-i-1):
if vetor[j] > vetor[j+1]:
vetor[j], vetor[j+1] = vetor[j+1], vetor[j]
return vetor
Ordenar o vetor
vetor_ordenado = bubble_sort(vetor.copy())
print(“Vetor ordenado:”, vetor_ordenado)
print(“Vetor ordenado:”, vetor_ordenado)
Passo 9
def busca_binaria(vetor, alvo):
esquerda = 0
direita = len(vetor) - 1
while esquerda <= direita:
meio = (esquerda + direita) // 2
if vetor[meio] == alvo:
return meio # Retorna o índice onde o alvo está
elif vetor[meio] < alvo:
esquerda = meio + 1
else:
direita = meio - 1
return -1 # Retorna -1 se o alvo não for encontrado
esquerda = 0
direita = len(vetor) - 1
while esquerda <= direita:
meio = (esquerda + direita) // 2
if vetor[meio] == alvo:
return meio # Retorna o índice onde o alvo está
elif vetor[meio] < alvo:
esquerda = meio + 1
else:
direita = meio - 1
return -1 # Retorna -1 se o alvo não for encontrado
Exemplo de busca
alvo = int(input("Digite o número que você quer buscar: "))
indice = busca_binaria(vetor_ordenado, alvo)
indice = busca_binaria(vetor_ordenado, alvo)
if indice != -1:
print(f"Número {alvo} encontrado no índice {indice}.")
else:
print(f"Número {alvo} não encontrado no vetor.")
print(f"Número {alvo} encontrado no índice {indice}.")
else:
print(f"Número {alvo} não encontrado no vetor.")
**Como funciona o código:**
1. **Geração de Números Aleatórios:** Usamos `random.randint(1, 100)` dentro de uma *list comprehension* para criar uma lista com 30 números aleatórios entre 1 e 100.
2. **Exibição dos Números:** Imprimimos o vetor original com os números gerados.
3. **Ordenação com Bubble Sort:** Implementamos a função `bubble_sort` que ordena o vetor em ordem crescente. Fizemos uma cópia do vetor original para manter os dados intactos.
4. **Exibição do Vetor Ordenado:** Printamos o vetor já ordenado.
5. **Busca Binária:** Implementamos a função `busca_binaria` que busca um número específico no vetor ordenado. Solicitamos ao usuário que digite o número que deseja encontrar e mostramos se ele foi encontrado e em qual posição.
Pronto! Agora você tem um código que gera, exibe, ordena e busca números em um vetor conforme solicitado.
Resposta
Abaixo está o código completo que atende ao enunciado do exercício:
import random
Exercícios relacionados
Leia o nome (string) e o valor (float) de uma determinada mercadoria de uma loja. Sabendo que o desconto para pagamento a vista é de
sobre o valor total, escrever um código em C para calcular o valor a ser pago a vista. Apresentar no terminal o nome da mercadoria, o valor total, o valor do desconto e o valor a ser pago a vista.
Faça um código para gerar 30 números aleatórios (entre 1 e 100) e armazenar em um vetor. Apresente os números gerados na tela e depois organize o vetor com um método de ordenação da sua escolha. Apresente o vetor ordenado e implemente o método de busca sequencial.
Conversão de Temperatura para Monitoramento Ambiental:
- Um engenheiro ambiental deseja converter uma temperatura de Celsius para Fahrenheit. Escreva a expressão de conversão e implemente o cálculo.
- Fórmula: Fahrenheit
Celsius * 9/5 + 32.