Я начинаю вести этот блог, чтобы отслеживать свой прогресс в обучении и документировать для дальнейшего использования.
Чтобы стать лучшим разработчиком, мы должны не просто писать код ради него, но он должен быть простым для понимания, масштабируемым и надежным. Для этого я буду обобщать содержание каждой главы Книги Чистого Кода.
День 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
В случае любого запроса, пожалуйста, поместите ур комментарии. До скорой встречи :)