Documente Academic
Documente Profesional
Documente Cultură
20
3. Funcția alăturată int caut_interpolare(int v[], int inf, int sup, int x) {
int m;
implementează algoritmul
if ((x <= v[sup]) && (x >= v[inf]))
căutării prin interpolare do{
primind două limite (inf, . . . . . . . . . . .
sup) ale unui interval de if(x > v[m])
valori într-un vector v[] inf = m + 1;
else
sortat crescător și o sup = m - 1;
valoare x care se caută și }
returnează 1 dacă valoarea while((v[m] != x) && (inf < sup) && (v[inf] != v[sup]) && (x >=
a fost găsită și 0 în caz v[inf]) && (x <= v[sup]));
contrar. Completați if (v[m] == x)
punctele de suspensie return 1;
(. . . . . . .) cu instrucțiunile else
corespunzătoare. return 0;
}
4. Identificați funcția alăturată și spuneți int f(int v[], int a, int b, int s){
int i, p;
rolul ei. if (a >= b)
return v[a];
Observație: Funcția swap interschimbă swap(v, a, (a + b)/2);
între ele două elemente ale unui vector, p = a;
date prin indicii lor în vector. for (i = a + 1; i <= b; i++)
if (v[i] < v[a])
swap(v, ++p, i);
swap(v, a, p);
if(s - 1 == p)
return v[p];
else if (s - 1 < p)
return f(v, a, p - 1, s);
else
return f(v, p + 1, b, s);
}
5. Folosind cifrele {1,2,3} se generează cu metoda backtracking, în ordinea crescătoare a valorii, toate numerele
impare formate din trei cifre distincte. Astfel se obţin, în ordine, numerele: 123, 213, 231, 321. Folosind aceeaşi
metodă, se generează numerele impare formate din patru cifre distincte din mulţimea {1,2,3,4}. Care va fi al
5-lea număr generat ?
6. Un heap cu n noduri şi înălţime h are toate nodurile frunză pe ultimul nivel. Câte noduri frunză conţine?
FOAIA DE EXAMEN CARE VA FI PREDATĂ PROFESORULUI VA ARĂTA ASTFEL:
Bilet nr. 20
NUME PRENUME, an: XX, grupa: XXXXXXX Data: 23.06.2018
Număr
Răspuns
test
1 O(n)
2 96
3 m = inf + (x - v[inf]) * (sup - inf) / (v[sup] - v[inf]);
Este funcția quickselect care determină cel de-al s-lea cel mai mic element al unei
4
mulţimi date în vectorul v[]
5 2413
6 2h
OBSERVAŢII:
1. Sunt 6 teste. Ele constau dintr-o întrebare. Răspunsul corect la întrebare aduce 1 punct la nota finală.
2. În nota finală 30% reprezintă nota de la laborator (i.e. maxim 3 puncte), 1 punct este din oficiu şi 6 puncte pot
aduce răspunsurile corecte la cele 6 teste.
5. Studenţii se vor prezenta cu minim 10 minute mai devreme la examen cu carnetul de student vizat la zi.
Nu se admit întârzieri.
6. În bancă, atunci când rezolvă subiectele de examen, studentul nu va avea asupra sa decât foaia de
examen, ciorna şi instrumente de scris. Telefoanele mobile, tabletele, genţile şi orice alte materiale se vor
depune într-un colţ al sălii de examen. Telefoanele mobile vor fi complet dezactivate. Orice încercare de
fraudă presupune eliminarea din examen.
Bilet nr. _ _ _
Număr
Răspuns
test