Comparações médias na busca linear
Esta calculadora de comparações da busca linear mostra quantas verificações de igualdade uma busca sequencial faz quando se sabe que o alvo está presente em uma coleção de n elementos.
Executar grátis
Sob a hipótese padrão de que o alvo tem a mesma chance de ocupar qualquer posição, ela informa tanto o número esperado de comparações quanto o pior caso. Assim, desenvolvedores, estudantes e revisores podem relacionar a notação O(n) a contagens concretas para um tamanho específico de coleção.
Entenda o modelo de probabilidade por trás da média
A busca linear examina os elementos em ordem e para assim que encontra o alvo. Se um alvo presente tiver a mesma probabilidade de ocupar qualquer uma das n posições, encontrar o primeiro elemento custa uma comparação, o segundo custa duas e o último custa n. Cada custo tem probabilidade 1/n. Portanto, o custo esperado é a média aritmética dos inteiros de 1 até n, simplificada para (n + 1) / 2. Informe o tamanho da coleção como n e a calculadora aplicará exatamente essa fórmula. A hipótese é essencial: isto não é uma estimativa baseada em tempo, hardware ou linguagem de programação. É uma contagem determinística para uma busca bem-sucedida com distribuição uniforme das posições. Se algumas posições ou valores forem procurados com maior frequência, as probabilidades deverão ser ponderadas separadamente. O modelo também não representa um alvo ausente, situação em que a busca linear comum sempre examina todos os n elementos.
Interprete as comparações médias e de pior caso
O resultado médio pode ser inteiro ou terminar em meio ponto. Por exemplo, uma coleção com 100 elementos tem custo esperado de 50.5 comparações. Esse valor fracionário não significa que uma execução faça meia comparação; ele é a média de longo prazo de muitas buscas bem-sucedidas com posições uniformes. O pior caso é n, pois um alvo na última posição só aparece depois que todos os elementos forem verificados. Em uma coleção de um elemento, ambos os valores são um. Conforme n cresce, a média se aproxima da metade do tamanho, enquanto o pior caso continua igual ao tamanho total. As duas grandezas crescem linearmente, por isso a análise assintótica classifica a busca linear bem-sucedida como O(n), apesar das constantes diferentes. Use a média para uma carga que realmente siga a distribuição informada e o pior caso como limite rígido para uma consulta bem-sucedida. A contagem não inclui controle do laço, acesso à memória, ordenação nem a complexidade interna da comparação.
Use o resultado em decisões de projeto e desempenho
Contagens concretas tornam discussões sobre algoritmos mais úteis do que a notação assintótica isolada. Você pode comparar o trabalho esperado da busca linear com o custo de criar outra estrutura de dados, principalmente quando a coleção é pequena, pouco consultada ou muda com frequência. Uma tabela hash ou um índice ordenado pode reduzir o trabalho de consulta, mas sua construção e manutenção têm um custo que uma varredura simples evita. Esta calculadora fornece o lado da varredura sem alegar que mede tempo de execução. Ela também ajuda a conferir exercícios, validar um modelo de planilha, documentar uma revisão de código ou produzir valores estáveis para material didático. Registre as condições junto ao resultado: o alvo está presente, todas as posições são equiprováveis e a busca começa no primeiro elemento e para na primeira correspondência. Duplicatas podem invalidar o modelo porque a primeira ocorrência encerra a busca. Para alvos ausentes, use n comparações; para acessos não uniformes, calcule uma esperança ponderada.
Casos de uso
Conferir um exercício de algoritmos
Confirme as contagens esperada e máxima de uma busca bem-sucedida para determinado tamanho de coleção.
Estimar consultas repetidas
Quantifique as comparações esperadas quando os alvos presentes estão uniformemente distribuídos em uma coleção não ordenada.
Explicar uma escolha de estrutura de dados
Compare o custo concreto da varredura com os custos de criar e manter um índice, vetor ordenado ou tabela hash.
Perguntas frequentes
Qual fórmula calcula o número médio de comparações?
Para um alvo presente e equiprovável em qualquer posição, a média é (n + 1) / 2 comparações.
Por que a média pode conter meia comparação?
Ela é um valor esperado entre muitas buscas, não a contagem de uma única execução. Cada busca individual faz um número inteiro de comparações.
Qual é o pior caso de uma busca linear bem-sucedida?
O pior caso exige n comparações e ocorre quando o alvo está na última posição.
A calculadora abrange um alvo ausente?
Não. O modelo pressupõe que o alvo está presente. Uma busca linear comum sem sucesso examina todos os n elementos.
O resultado mede o tempo de execução?
Não. Ele conta apenas comparações; o tempo real também depende da implementação, do custo de comparar elementos, do hardware e do trabalho adicional.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/linear-search-avg \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":100}'const res = await fetch("https://api.kit.forhosting.com/dev/linear-search-avg", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 100
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/linear-search-avg",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 100
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/linear-search-avg", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":100}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":100}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/linear-search-avg", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"n": 100
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.linear_search_avg",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |