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. | ||