Questões de Concurso
Sobre algoritmos de busca em algoritmos e estrutura de dados
Foram encontradas 121 questões
Um método que implementa um algoritmo de busca binária recebe como parâmetros um vetor de inteiros ordenados descendentemente, o comprimento desse vetor e um número inteiro que se deseja localizar no vetor. O cabeçalho desse método é o seguinte:
public int buscaBin(int vet[], int n, int val)
Admitindo-se que o vetor passado como parâmetro tenha 750 elementos, qual será o número máximo de iterações que o algoritmo irá realizar até que o valor (val) seja localizado ou que seja detectado que esse valor não se encontra no vetor?
Considere um método busca que recebe como parâmetros um elemento x do tipo inteiro e um vetor V de inteiros. O objetivo do método é verificar se o elemento x está contido no vetor V. Em caso positivo, a posição de x em V é retornada. Caso contrário, o valor -1 é retornado. Assim, por exemplo, se o método busca é executado com V = [1,7,5] e x = 2, o valor -1 é retornado. Se o método busca é chamado com V = [1,7,5] e x = 7, o valor 1 é retornado.
Usando a técnica de teste funcional, a seguinte partição do domínio de entrada foi definida:
Característica: localização do elemento na lista
Bloco 1: elemento é o primeiro da lista
Bloco 2: elemento é o último da lista
Bloco 3: elemento está em alguma posição na lista, exceto na primeira e na última
Tendo em vista que cada teste é composto por uma tupla (V, x), assinale a alternativa que apresenta, de forma correta, o conjunto de testes definidos com base na partição acima.
Julgue o item a seguir, relativo ao conceito de construção de algoritmos.
O algoritmo a seguir apresenta um exemplo de busca sequencial.
Analise a árvore binária de busca (BST), abaixo, representada pelas chaves dos seus nós.
Qual é a sequência de chaves representativa do seu percurso
em pré-ordem?
Considere uma árvore binária de busca (BST) com n (n>3) níveis (o nó raiz está no nível 1), 2n - 1 nós e todas as chaves diferentes. Suponha, ainda, que algum dos pais de duas folhas seja removido da árvore e, mais tarde, uma chave com o mesmo valor da chave do nó removido seja inserida na árvore.
Quantas são as comparações necessárias para fazer a busca e encontrar o nó cuja chave foi removida e depois reinserida?
Julgue o item seguinte, quanto aos conceitos da programação estruturada e da programação orientada a objetos e aos métodos de ordenação, pesquisa e hashing.
Na pesquisa do tipo sequencial, há aumento do desempenho se
a tabela estiver ordenada pelo valor da chave.
Avalie se são verdadeiras (V) ou falsas (F) as afirmativas a seguir.
I O método de busca “pesquisa binária” necessita de um ordenamento prévio do vetor.
II O método “pesquisa binária” possui o tempo de busca maior que o método “busca sequencial”.
III O método “busca sequencial” é mais indicado quando se sabe antecipadamente que a maior parte dos registros necessita ser pesquisada.
As afirmativas I, II e III são, respectivamente:
Julgue o item seguinte, a respeito de estruturas em programação e de arquiteturas de bancos de dados.
No algoritmo denominado busca em amplitude, a árvore
é percorrida visitando-se todos os nós de um ramo até se
atingir os nós terminais, repetindo-se o processo em cada um
dos ramos.
Um método de busca bastante utilizado, conhecido como hash, baseia-se na utilização que mapeia chaves em endereços de memória, de modo que os dados associados a cada chave possam ser rapidamente localizados e lidos. Quando há conflitos de localização, algum algoritmo de separação é adotado.
Considere uma tabela hash armazenada em um arquivo no disco rígido. Supondo-se que a mesma possua uma função de hash razoavelmente protegida de conflitos, o número médio de acessos ao disco, necessários para localizar uma chave em um universo de N chaves, é mais próximo de
O mergesort é um algoritmo de ordenação do tipo dividir-para-conquistar. Sua ideia básica consiste em dividir o problema em vários subproblemas, e resolver esses subproblemas por meio da recursividade e, em seguida,após todos os subproblemas terem sido resolvidos,ocorre a conquista, que é a união das resoluções dos subproblemas. O algoritmo mergesort, apresentado em seguida, está codificado em C/C++.Esse algoritmo ordena o vetor de inteiros a[p],..., a[r](onde, p<r) usando um vetor auxiliar b[p],..., b[r].O vetor a[ ] é dividido recursivamente ao meio em duas instâncias menores, que são ordenadas e então colocadas
juntas, ordenando todo o vetor. No código estão faltando as linhas que fazem a divisão por recursão (linhas 7 e 8) e as linhas que concretizam a fase de conquista, unindo todas as intercalações no vetor principal (linhas 11 e 12).
1. voidmergesort(int a[], int p, int r)
2. {
3. inti,j,k,m;
4. if (r > p)
5. {
6. m = (r + p)/2;
7. …
8. …
9. for (i = m+1; i> p; i--) b[i-1] = a[i-1];
10. for (j = m; j < r; j++) b[r+m-j] = a[j+1];
11. ...
12. ...
13. }
14. }