Pesquisa Linear: Python, C++ Exemplo
โก Resumo Inteligente
A Busca Linear examina cada elemento de uma lista sequencialmente atรฉ encontrar o valor desejado ou atรฉ o final da lista. Esse mรฉtodo nรฃo requer dados ordenados, tem complexidade de tempo O(n) e รฉ eficaz para coleรงรตes pequenas ou nรฃo ordenadas.

O que รฉ algoritmo de pesquisa?
Um algoritmo de busca รฉ projetado para encontrar um elemento ou objeto em uma coleรงรฃo de elementos ou objetos com uma determinada estrutura de dados. Por exemplo, buscar a altura mรญnima em uma lista de alturas ou a maior marca em uma lista ou matriz de nรบmeros. Alguns algoritmos de busca populares incluem "Busca Linear", "Busca Binรกria", "Busca por Salto", "Busca de Fibonacci", etc.
O que รฉ pesquisa linear?
Pesquisa Linear รฉ um dos algoritmos de busca mais simples. A partir de uma lista ou array, ele busca o elemento desejado um por um. A busca linear itera sobre toda a lista e verifica se algum elemento especรญfico รฉ igual ao elemento procurado. Tambรฉm รฉ chamada de busca sequencial.
O que a funรงรฃo de pesquisa linear faz?
Uma matriz de inteiros รฉ dada como โNumbersโ, e uma variรกvel โitemโ contรฉm o nรบmero inteiro a ser pesquisado.
Agora, o algoritmo de pesquisa linear pode fornecer a seguinte saรญda:
- โ-1โ; isso significa que o elemento em questรฃo nรฃo foi encontrado na matriz.
- Qualquer nรบmero entre 0 e n-1; significa que o elemento de pesquisa foi encontrado e retorna o รญndice do elemento na matriz. Aqui, โnโ representa o tamanho do array.
Como funciona a Pesquisa Linear?
Vamos supor que temos um array contendo nรบmeros inteiros. A tarefa รฉ encontrar um nรบmero especรญfico nesse array.
- Se o nรบmero estiver localizado no array, precisamos retornar o รญndice desse nรบmero.
- Se o nรบmero fornecido nรฃo for encontrado, ele retornarรก -1.
No fluxograma, โDadosโ รฉ o array de inteiros, โNโ รฉ o tamanho do array e o โitemโ รฉ o nรบmero que queremos pesquisar no array.
Fluxograma para algoritmo de pesquisa linear:
Aqui estรฃo as etapas do fluxograma:
Passo 1) Leia o item de pesquisa, โitemโ.
Passo 2) Inicie com i=0 e รญndice=-1.
Passo 3) Se eu
Passo 4) Se Data[i] for igual a โitemโ, vรก para a etapa 5. Caso contrรกrio, vรก para a etapa 6.
Passo 5) รndice = i (Como o item รฉ encontrado no รญndice nยบ i). Vรก para a etapa 8.
Passo 6) eu = eu +1.
Passo 7) Vรก para a etapa 3.
Passo 8) Parar.
Para simplificar, fornecemos um exemplo com uma matriz de inteiros. A pesquisa linear tambรฉm รฉ aplicรกvel na string, em uma matriz de objetos ou em uma estrutura.
Apelido Code para o algoritmo de busca sequencial
O pseudocรณdigo a seguir descreve a lรณgica da busca linear descrita acima. Ele percorre o array a partir do primeiro รญndice e retorna a posiรงรฃo em que houver uma correspondรชncia; caso contrรกrio, retorna -1.
function linearSearch: in โ Data[], item foundAt = -1 for i in (0 to data.length): if data[i] equals item: // item is found in the array // returning the index return i // item not found in the array // -1 means no item found, as a negative index is not valid return -1
C++ Code Exemplo de pesquisa linear
Aqui estรก um completo C++ Programa que implementa a busca sequencial e imprime o รญndice do valor pesquisado.
#include <bits/stdc++.h> using namespace std; int linearSearch(int *arr, int item, int n) { int idx = -1; for (int i = 0; i < n; i++) { if (arr[i] == item) { idx = i; break; } } return idx; } int main() { int array[] = {1, 9, 8, 7, 6, 3, 11, 4, 6, 9, 7, 2, 0, 19, -10}; int n = sizeof(array) / sizeof(array[0]); int item; cout << "Enter a number to search: "; cin >> item; int idx = linearSearch(array, item, n); if (idx >= 0) { cout << item << " is found at index " << idx << endl; } else { cout << "Could not find " << item << " in the array" << endl; } }
Saรญda:
Enter a number to search: -10 -10 is found at index 14
Python Code Exemplo de pesquisa linear
A mesma lรณgica em Python Utiliza um รบnico loop sobre os รญndices da lista e retorna a posiรงรฃo do elemento correspondente.
def linearSearch(data, item): for i in range(len(data)): if data[i] == item: return i return -1 data = [1, 9, 8, 7, 6, 3, 11, 4, 6, 9, 7, 2, 0, 19, -10] item = int(input("Enter a number to search: ")) idx = linearSearch(data, item) if idx >= 0: print("{} is found at index {}".format(item, idx)) else: print("{} was not found".format(item))
Saรญda:
Enter a number to search: -10 -10 is found at index 14
Anรกlise de complexidade do algoritmo de pesquisa linear
De forma geral, a complexidade de tempo significa a quantidade de tempo de CPU necessรกria para executar uma determinada tarefa. No algoritmo de busca linear, a tarefa consiste em encontrar a chave de busca entre os elementos do vetor.
Trรชs tipos de complexidades de tempo sรฃo:
- Worst Case Scenario
- Melhor cenรกrio de caso
- Cenรกrio Mรฉdio de Caso
Complexidade temporal da pesquisa linear no pior cenรกrio:
Suponhamos que precisamos realizar uma busca linear em um array de tamanho "n". Podemos encontrar o item de busca entre os รญndices 0 e n-1. No pior cenรกrio, o algoritmo tentarรก encontrar correspondรชncias entre todos os elementos do array e o elemento de busca.
Nesse caso, a complexidade no pior caso serรก O(n). Aqui, โOโ โ notaรงรฃo O grande โ significa a funรงรฃo de complexidade.
Complexidade temporal da pesquisa linear no cenรกrio Melhor-Case:
Vamos supor que estamos procurando um elemento que reside na primeira posiรงรฃo do array. Nesse cenรกrio, o algoritmo de busca linear nรฃo buscarรก por todos os n elementos do array. Portanto, a complexidade serรก O(1). Isso significa tempo constante.
Complexidade temporal da pesquisa linear no cenรกrio mรฉdio:
Quando um elemento รฉ encontrado no รญndice intermediรกrio do array, entรฃo pode-se dizer que a complexidade mรฉdia do caso para pesquisa linear รฉ O(N), onde N significa o comprimento do array.
A complexidade espacial do algoritmo de busca linear:
A complexidade de espaรงo para a busca linear รฉ sempre O(N) porque nรฃo precisamos armazenar ou usar nenhum tipo de variรกvel temporรกria na funรงรฃo de busca linear.
Como melhorar o algoritmo de pesquisa linear
A busca pode ser realizada vรกrias vezes ao longo do ciclo de vida do programa. Tambรฉm รฉ possรญvel que estejamos executando o algoritmo de busca linear e procurando por uma chave especรญfica diversas vezes. Podemos usar o โAlgoritmo de pesquisa binรกriaโ se a matriz for uma matriz classificada.
Suponha que a matriz consista em 10 mil nรบmeros e o elemento de destino seja encontrado no 5000ยบ รญndice. Portanto, o algoritmo tentarรก comparar 5000 elementos. Agora, as comparaรงรตes sรฃo tarefas que exigem muita CPU. Para otimizar o algoritmo de busca linear, temos duas opรงรตes.
- Transposiรงรฃo
- Mover para Frente
Transposiรงรฃo:
Neste mรฉtodo, trocaremos o elemento de busca com o elemento anterior na matriz. Por exemplo, digamos que vocรช tenha uma matriz como a seguinte:
Dados[] = {1,5,9,8,7,3,4,11}
Agora queremos pesquisar 4. Etapas de Transposiรงรฃo:
Passo 1) โ4โ รฉ encontrado no รญndice 6. Foram necessรกrias seis comparaรงรตes.
Passo 2) Troque dados[6] e dados[5]. Entรฃo a matriz de dados ficarรก assim:
Dados[] = {1,5,9,8,7,4,3,11}
Passo 3) Pesquise 4 novamente. Encontrado no รญndice 5. Desta vez foram necessรกrias cinco comparaรงรตes.
Passo 4) Troque data[5] e data[4]. Entรฃo o array de dados ficarรก assim:
Dados[] = {1,5,9,8,4,7,3,11}
Agora, observe que quanto mais frequentemente uma chave รฉ pesquisada, mais o รญndice diminui. Consequentemente, o nรบmero de comparaรงรตes tambรฉm diminui.
Vรก para a frente:
Neste mรฉtodo, trocamos o elemento de busca para o รญndice 0. Porque se for pesquisado novamente, podemos encontrรก-lo em tempo O(1).
Aplicaรงรฃo do Algoritmo de Pesquisa Linear
Aqui estรฃo alguns aplicativos de pesquisa linear que podemos usar.
- Para arrays de tamanho reduzido ou com poucos elementos na lista, รฉ mais fรกcil usar a busca linear.
- O mรฉtodo de pesquisa linear pode ser usado de forma simples ou arrays multidimensionais ou outras estruturas de dados.
- Geralmente, a busca linear รฉ simples e eficiente para realizar uma busca nos dados โnรฃo ordenadosโ. Podemos buscar facilmente um รบnico dado de uma lista nรฃo ordenada fornecida.



