Я начинаю вести этот блог, чтобы отслеживать свой прогресс в обучении и документировать для дальнейшего использования.

Чтобы стать лучшим разработчиком, мы должны не просто писать код ради него, но он должен быть простым для понимания, масштабируемым и надежным. Для этого я буду обобщать содержание каждой главы Книги Чистого Кода.

День 1:

Кратко о том, что я узнал сегодня:Соглашения об именах из Clean Code

  • Название должно говорить о намерении
  • Используйте доступные для поиска имена
  • Используйте произносимое имя
  • Не кодируйте тип в именах Пример: phoneString, paymentInt
  • Избегайте префиксов к именам Пример: IshapeFactory
  • Не используйте одно и то же имя для обозначения двух разных вещей
  • Используйте специфичное для домена имя, например: JobQueue, nameBuilder.
  • Избегайте слишком длинных имен

День 2:

Кратко о том, что я узнал сегодня:структура данных кучи.

Куча — это особый тип двоичного дерева. Куча — это бинарное дерево, отвечающее следующим критериям:

  • Является полным бинарным деревом;
  • Значение каждого узла должно быть не больше (или не меньше) значения его дочерних узлов.

Классификация кучи

Существует два типа кучи: Максимальная куча и Минимальная куча.

  • Максимальная куча: каждый узел в куче имеет значение не меньше его дочерних узлов. Таким образом, верхний элемент (корневой узел) имеет наибольшее значение в куче.
  • Минимальная куча: каждый узел в куче имеет значение не больше, чем его дочерние узлы. Таким образом, верхний элемент (корневой узел) имеет наименьшее значение в куче.

Куча имеет следующие свойства:

  • Вставка элемента в кучу имеет временную сложность O(\log N)O(logN);
  • Удаление элемента из кучи имеет временную сложность O(\log N)O(logN);
  • Максимальное/минимальное значение в куче можно получить с временной сложностью O(1)O(1).

Сначала мы рассмотрим вставку в Max Heap и Min Heap:

Максимальная вставка кучи:

Suppose the Heap is a Max-Heap as:
10
/    \
5      3
/ \
2   4
The new element to be inserted is 15.
Process:
Step 1: Insert the new element at the end.
10
/    \
5      3
/ \    /
2   4  15
Step 2: Heapify the new element following bottom-up
approach.
-> 15 is more than its parent 3, swap them.
10
/    \
5      15
/ \    /
2   4  3
-> 15 is again more than its parent 10, swap them.
15
/    \
5      10
/ \    /
2   4  3
Therefore, the final heap after insertion is:
15
/    \
5      10
/ \    /
2   4  3

Минимальная вставка кучи

Suppose the Heap is a Min-Heap as:
2
/    \
3      4
/ \
5   6
The new element to be inserted is 1.
Process:
Step 1: Insert the new element at the end.
2
/    \
3      4
/ \.    /
5   6.   1
Step 2: Heapify the new element following bottom-up
approach.
-> 1 is less than its parent 4, swap them.
2
/    \
3      1
/ \.    /
5   6.   4
-> 1 is again more than its parent 2, swap them.
2
/    \
3      1
/ \.    /
5   6.   4
Therefore, the final heap after insertion is:
1
/    \
3      2
/ \.    /
5   6.   4

В случае любого запроса, пожалуйста, поместите ур комментарии. До скорой встречи :)