This shows you the differences between two versions of the page.
sda-aa:laboratoare:07 [2021/04/12 06:53] cristian.rusu [2.3 Operații pe biți] |
sda-aa:laboratoare:07 [2021/04/12 06:55] (current) cristian.rusu [4. Exerciții] |
||
---|---|---|---|
Line 26: | Line 26: | ||
* Este recomandat ca funcţia de indexare să existe explicit (să fie definită ca subprogram) atunci când are o formă complicată. Dacă are o formă simplă (cum ar fi o singură operaţie), această parte poate fi omisă. | * Este recomandat ca funcţia de indexare să existe explicit (să fie definită ca subprogram) atunci când are o formă complicată. Dacă are o formă simplă (cum ar fi o singură operaţie), această parte poate fi omisă. | ||
- | ====== 2.3 Operații pe biți ====== | + | === 2.3 Operații pe biți === |
Menţionăm următoarele operaţii pe biţi ce se pot folosi în C/C++ : | Menţionăm următoarele operaţii pe biţi ce se pot folosi în C/C++ : | ||
Line 47: | Line 47: | ||
* n >> p == n / k | * n >> p == n / k | ||
* n & (k - 1) == n % k | * n & (k - 1) == n % k | ||
- | * | + | |
Apar diferenţe în cazul numerelor negative.</note> | Apar diferenţe în cazul numerelor negative.</note> | ||
Line 122: | Line 122: | ||
- | === Radix Sort === | + | === 3.2 Radix Sort === |
* Timp mediu: O(N * k) | * Timp mediu: O(N * k) | ||
Line 194: | Line 194: | ||
- Generaţi un vector de n întregi cu n = 1e6. Sortaţi vectorul cu cei doi algoritmi şi comparaţi rezultatele (aici ne intereseaza viteza sortării, vezi https://stackoverflow.com/questions/5248915/execution-time-of-c-program). [80% notă] | - Generaţi un vector de n întregi cu n = 1e6. Sortaţi vectorul cu cei doi algoritmi şi comparaţi rezultatele (aici ne intereseaza viteza sortării, vezi https://stackoverflow.com/questions/5248915/execution-time-of-c-program). [80% notă] | ||
- Introduceţi o variabilă globală cu care să contorizaţi numărul de apelări ale funcţiei „cerne“. Afişaţi numărul de apelări necesare pentru construirea heap-ului (makeHeap) şi numărul de apelări necesare pentru tot algoritmul (heapSort). [10% notă] | - Introduceţi o variabilă globală cu care să contorizaţi numărul de apelări ale funcţiei „cerne“. Afişaţi numărul de apelări necesare pentru construirea heap-ului (makeHeap) şi numărul de apelări necesare pentru tot algoritmul (heapSort). [10% notă] | ||
- | - Cu Radix Sort, încercaţi să sortaţi un vector cu orice numere întregi(pozitive şi negative). Verificaţi rezultatul şi adăugaţi un pas în algoritm pentru a aşeza corect elementele. [10% notă] | + | - Cu Radix Sort, încercaţi să sortaţi un vector cu orice numere întregi (pozitive şi negative). Verificaţi rezultatul şi adăugaţi un pas în algoritm pentru a aşeza corect elementele. [10% notă] |
==== 5. Probleme opționale, de interviu ==== | ==== 5. Probleme opționale, de interviu ==== | ||
- Se dă un vector cu n întregi, unde toate valorile din vector sunt cuprinse între 0 şi n^2 - 1. Sortaţi vectorul în timp O(n). Hint: încercaţi să folosiţi altă „bază“ decât 256 pentru algoritm. | - Se dă un vector cu n întregi, unde toate valorile din vector sunt cuprinse între 0 şi n^2 - 1. Sortaţi vectorul în timp O(n). Hint: încercaţi să folosiţi altă „bază“ decât 256 pentru algoritm. |