diff options
5 files changed, 8 insertions, 8 deletions
| -rw-r--r-- | Seminar04/README.md | 4 | ||||
| -rw-r--r-- | Seminar05/README.md | 4 | ||||
| -rw-r--r-- | Seminar06/README.md | 2 | ||||
| -rw-r--r-- | Seminar09/README.md | 2 | ||||
| -rw-r--r-- | Seminar11/README.md | 4 |
diff --git a/Seminar04/README.md b/Seminar04/README.md index 18eae0d..efa7539 100644 --- a/Seminar04/README.md +++ b/Seminar04/README.md @@ -99,7 +99,7 @@ std::vector<int> filter(const std::vector<int>& arr, bool (*pred)(int)) { ``` ## Сложността на push_back -До момента разгледахме няколко структури от данни и се стремяхме главно към O(1) сложност. Виждоме, че push_back() е доста използвана операция, каква е нейната сложност? Ами тя доста често е константна, но когато ни се наложи да направим алокация е линейна. Тоест, в най - лошия случай тя е O(n). Но това не е достатъчно добра оценка. +До момента разгледахме няколко структури от данни и се стремяхме главно към O(1) сложност. Виждаме, че push_back() е доста използвана операция, каква е нейната сложност? Ами тя доста често е константна, но когато ни се наложи да направим алокация е линейна. Тоест, в най - лошия случай тя е O(n). Но това не е достатъчно добра оценка. В случая worst case сложността е твърде песимистична. Интересува ни по - скоро колко време ще отнеме цялото изпълнение на алгоритъма използващ push_back() а не колко време ще отнеме на 17 стъпка, примерно. Приемаме по - оптимистичен подход - нека не се интересуваме от това колко е най - лошия случай на операцията а да разгледаме колко време ни отнема да направим всички операции. Това неформално е целта на така наречения амортизиран анализ на сложност. С него няма да се занимаваме особено много, но е добре да го знаем от обща култура. @@ -204,4 +204,4 @@ LL = 1 -> 5 -> 2 -> 4 -> 3 * Имате празен списък * Имате списък с един елемент * Имате списък и четни елементи -* Имате списък с нечетни елементи
\ No newline at end of file +* Имате списък с нечетни елементи diff --git a/Seminar05/README.md b/Seminar05/README.md index 865e784..b087f9a 100644 --- a/Seminar05/README.md +++ b/Seminar05/README.md @@ -88,7 +88,7 @@ Iterator operator++(int) { ``` Напомняме, че разликата между префиксния и постфиксния operator++ е просто един "служебен" int като аргумент на постфиксния. -Супер, вече можем да се движим, но това движение става безполезно ако нямаме начин да видим каква информация имаме в currentNode. Тази задача по конвенция се изпълнява от operator*. Супер, нека го предефинираме: +Супер, вече можем да се движим, но това движение става безполезно ако нямаме начин да видим каква информация имаме в currentNode. Тази задача по конвенция се изпълнява от operator\*. Супер, нека го предефинираме: ```cpp T& operator*() { return currentNode->data; @@ -339,4 +339,4 @@ LinkedListNode<int>* partition(LinkedListNode<int>* head, int x); **HINT:** -Можете да си направите два указателя, чрез които да строите някакви полезни помощни списъци. После, след като построите тези полезни помощни списъци, можете да пренасочите правилните указатели и да получите коректен отговор.
\ No newline at end of file +Можете да си направите два указателя, чрез които да строите някакви полезни помощни списъци. После, след като построите тези полезни помощни списъци, можете да пренасочите правилните указатели и да получите коректен отговор. diff --git a/Seminar06/README.md b/Seminar06/README.md index bfd184f..4915dad 100644 --- a/Seminar06/README.md +++ b/Seminar06/README.md @@ -70,4 +70,4 @@ void insertSorted(std::list<T>& ll, const T& elem); Вход: ``` 1 -> 2 -> 3 ``` -Изход: false
\ No newline at end of file +Изход: false diff --git a/Seminar09/README.md b/Seminar09/README.md index 92a4fdb..3917b0e 100644 --- a/Seminar09/README.md +++ b/Seminar09/README.md @@ -112,4 +112,4 @@ succ(x) = min{y | y е ключ на възел в T и y > x} // Наследн Бележка: Не е нужно х да се съдържа в дървото. ## Задача седма (Контролно) -Да се напише функция, която намира сумата на всички елементи на двоично наредено дърво от цели числа, които имат нечетен брой наследници в интервала [x, y] (т.е. сумата на броя елементи в лявото поддърво и броя елементи в дясното поддърво в интервала [x, y] е нечетно число). Нека x и y са параметри на функцията.
\ No newline at end of file +Да се напише функция, която намира сумата на всички елементи на двоично наредено дърво от цели числа, които имат нечетен брой наследници в интервала [x, y] (т.е. сумата на броя елементи в лявото поддърво и броя елементи в дясното поддърво в интервала [x, y] е нечетно число). Нека x и y са параметри на функцията. diff --git a/Seminar11/README.md b/Seminar11/README.md index cf0d36c..c1c5060 100644 --- a/Seminar11/README.md +++ b/Seminar11/README.md @@ -30,7 +30,7 @@ ### Тегловен граф -Често е полезно да "закачим" някакви тегла на ребрата. Примерно, ако върходете на графа представляват някакви забележителности, а ребрата са пътища между тях, теглата могат да представляват времето в минути, което отнема да стигнем от v1 до v2. +Често е полезно да "закачим" някакви тегла на ребрата. Примерно, ако върховете на графа представляват някакви забележителности, а ребрата са пътища между тях, теглата могат да представляват времето в минути, което отнема да стигнем от v1 до v2. Примерно, това е **рисунка** на тегловен граф: @@ -142,4 +142,4 @@ matrix[7][5] = false Предимството на тази реализация е, че бързо можем да добавяме върхове и ребра. Също така паметта ни вече не е O(|V|^2) а O(|V| + |E|). -Част от материалите са взаимствани от [тук](https://github.com/MariaGrozdeva/Data_structures_and_algorithms_FMI/tree/main/Sem_10)
\ No newline at end of file +Част от материалите са взаимствани от [тук](https://github.com/MariaGrozdeva/Data_structures_and_algorithms_FMI/tree/main/Sem_10) |
