Pulse 0 Denunciar post Postado Julho 6, 2015 Busca sequencial em um veto desordenado que retorna a posição da primeira ocorrência de um elemento procurado usando uma estratégia similar a da busca binaria. Dica: Se não é o elemento do meio, procure dos dois lados e retorne o menor dos índices encontrados. Se for o elemento do meio, continue a busca apenas do lado esquerdo, retornando a posição de lá se encontrar e o meio senão encontrar #include <stdio.h> int busca(int vetor[], int n, int posi, int inicio, int fim) { posi = (inicio+fim)/2; if(vetor[posi] == n) { return busca(vetor, n, posi, inicio, posi); } else { return busca(vetor, n, posi, posi, fim); } } int main () { int vetor={5,6,8,9}, n, inicio=0, fim=4, posi; scanf("%d", &n); printf("%d", busca(vetor, n, posi, inicio, fim)); } Isso foi o máximo que eu consegui fazer nas minhas tentativas. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Julho 6, 2015 Esse enunciado está estranho. Primeiro fala de busca sequencial e depois de estratégia de busca binária (que necessita de um array ordenado)....O argumento posi é passado por valor, vc não está alterando nada com aquela atribuição.O array está declarado incorretamente. Dica: Se não é o elemento do meio, procure dos dois lados e retorne o menor dos índices encontrados. Se for o elemento do meio, continue a busca apenas do lado esquerdo, retornando a posição de lá se encontrar e o meio senão encontrar Se eu não encontrar o elemento, tenho que retornar uma posição que corresponde ao meio do array? Isso não faz sentido. Como diferenciar o elemento não encontrado de um encontrado exatamente no meio do array? Compartilhar este post Link para o post Compartilhar em outros sites