Looking for S2 Estruturas de Dados e Algoritmos Fundamentais 2024 02 test answers and solutions? Browse our comprehensive collection of verified answers for S2 Estruturas de Dados e Algoritmos Fundamentais 2024 02 at elearning.uab.pt.
Get instant access to accurate answers and detailed explanations for your course questions. Our community-driven platform helps students succeed!
Uma certa função hash, h(x), aplicada à chave, coloca registos com as chaves: 62, 79, 81, 12, 54, 97, 34, numa tabela hash.
As colisões são tratadas por uma função re-hash, r(x), que recebe como argumento o resultado da aplicação da função hash.
Os valores-chave são introduzidos na ordem indicada acima, para produzir a seguinte tabela
Quais são as funções h(x) e r(x), respectivamente?
A eficiência da codificação hash depende de
I. O número de colisões que ocorre II. O tamanho dos dados na lista III. O método de lidar com as colisõesUma array contém dados que foram inseridos através da codificação hash.
Como é que um dado item deve ser pesquisado nesta array?
As chaves: 10, 28, 2, 7, 45, 25, 40, 29, são para ser inseridas na seguinte tabela hash
A função hash é key % 11. As colisões são resolvidas pelo método "hash-and-search" (Open Addressing and Linear Probing).
Em que célula irá a chave 29 ocupar, eventualmente?
É feita uma pesquisa binária numa array com 600 elementos.
No pior caso, qual dos seguintes números representa a melhor aproximação do número de iterações do algorítmo?
Um algorítmo para pesquisar por um dado valor x em grandes arrays ordenadas, compara x com cada terceiro elemento da array até que um, maior ou igual a x seja encontrado. Quando um valor maior é encontrado, o algorítmo compara x com os dois elementos anteriores.
Se a array estiver ordenada por ordem ascendente, qual das seguintes expressões descreve os casos em que o algorítmo utiliza menos comparações, para encontrar x, que aquelas utilizadas numa pesquisa binária?
O fragmento de código seguinte efectua uma pesquisa sequencial para determinar se um dado inteiro, val, está ou não armazenado numa array com elementos \tiny a[0] a
a[n-1]
1 intl i = 0;
2 while (<expressão>)
3 i++;
4 if (i == n)
5 return -1; // val não encontrado
6 else
7 return i; // val encontrado na posição i
Qual das seguintes expressões deverá substituir <expressão>, nesse fragmento, para que o referido algorítmo funcione como previsto?
I. val != a[i] II. i < n && val == a[i] III. val != a[i] && i < n IV. i < n && val != a[i] V. i < n || val != a[i] Suponha uma classe SomeClass onde está definida uma variável \tiny a[size]
1 template<int size=10>
2 class SomeClass {
3 public:
4 ...
5 int binSearch(int key);
6 private:
7 int length;
8 int a[size];
9 };
Considere o seguinte método binSearch() dessa classe
12 // Efectua uma pesquisa binária por uma chave numa array.
13 // Pré-condição: A array a[0]...a[a.length-1] está ordenada
14 // por ordem ascendente.
15 // Pós-condição: Devolve index tal que a[index] == key.
16 // Se key não está em v, então devolve -1.
17
18 template<int size>
19 int SomeClass<size>::binSearch(int key)
20 {
21 int low = 0;
22 int high = length - 1;
23 while (low <= high)
24 {
25 int mid = (low + high)/2;
26 if (a[mid] == key)
27 return mid;
28 elseif (a[mid] < key)
29 low = mid + 1;
30 else
31 high = mid - 1;
32 }
33 return -1;
34 }
A pesquisa binária será efectuada na seguinte lista
Na procura pelo elemento 27, o intervalo de pesquisa depois da primeira passagem pelo ciclo while, será
Suponha uma classe SomeClass onde está definida uma variável \tiny a[size]
1 template<int size=10>
2 class SomeClass {
3 public:
4 ...
5 int binSearch(int key);
6 private:
7 int length;
8 int a[size];
9 };
Considere o seguinte método binSearch() dessa classe
11 // Efectua uma pesquisa binária por uma chave numa array.
12 // Pré-condição: A array a[0]...a[a.length-1] está ordenada
13 // por ordem ascendente.
14 // Pós-condição: Devolve index tal que a[index] == key.
15 // Se key não está em v, então devolve -1.
16
17 template<int size>
18 int SomeClass<size>::binSearch(int key)
19 {
20 int low = 0;
21 int high = length - 1;
22 while (low <= high)
23 {
24 int mid = (low + high)/2;
25 if (a[mid] == key)
26 return mid;
27 elseif (a[mid] < key)
28 low = mid + 1;
29 else
30 high = mid - 1;
31 }
32 return -1;
33 }
A pesquisa binária será efectuada na seguinte lista
O que é que ficará armazenado em y depois de executado o seguinte?
32 int y = binSearch(4);
O método partition(), utilizado pelo QuickSort, particiona uma lista da seguinte forma
O que é que o particionamento de uma array necessita?