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:
  1. Gere 30 números aleatórios entre 1 e 100 e armazene em um vetor.
  2. Exiba esses números na tela.
  3. Ordene o vetor usando um método de ordenação de nossa escolha.
  4. Mostre o vetor ordenado.
  5. 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)

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

Ordenar o vetor

vetor_ordenado = bubble_sort(vetor.copy())
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

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.")

**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.