Публикации по теме 'divide-and-conquer'


Как думать как программист
Абсолютная правда ! программирование - это не только набор длинных строк кода, это скорее решение проблем [что на самом деле требует глубокого размышления]. Оно влечет за собой понимание проблемы еще до того, как пытаться ее решить. Представьте, что вы пытаетесь написать программу калькулятора, когда вы даже не понимаете, как вычисляется квадрат числа; Вы просто прибегнете к копированию кода из stackoverflow, солгав себе, что вы его просмотрите. [и вы даже не пересмотрите это!]..

Алгоритм умножения матриц Штрассена
Алгоритм Штрассена - это алгоритм умножения матриц. Это быстрее, чем простой алгоритм умножения матриц. Чтобы узнать, как это сделать, давайте сравним оба этих алгоритма вместе с их реализацией на C ++. Предположим, мы перемножаем 2 матрицы A и B, и обе они имеют размерность n x n. Результирующая матрица C после умножения в наивном алгоритме получается по формуле: для i = 1,…, n и j = 1,…, n Реализация этой формулы в C ++: int** multiply(int** A, int** B, int n) { int**..

Сортировка слиянием, объяснение этого
Что такое сортировка слиянием? Как это работает? Фактическая рекурсия против того, что я считал рекурсией. Пример сортировки слиянием. Какие преимущества и недостатки? В настоящее время я беру мастер-класс Udemy по алгоритмам JavaScript и структурам данных от Кольта Стила. Https://www.udemy.com/course/js-algorithms-and-data-structures-masterclass/ , который я бы порекомендовал всем, кто хочет узнать больше об алгоритмах в Javascript. Одна из многих тем касается алгоритмов..

День 61: Максимальный подмассив
LeetCode 53. Максимальный подмассив Sol динамического программирования: O (n) class Solution { public: int maxSubArray(vector<int>& nums) { int max_so_far = INT_MIN, max_tmp = 0; for (int elem : nums) { max_tmp += elem; max_so_far = max(max_tmp, max_so_far); if (max_tmp < 0) { max_tmp = 0; } } return max_so_far; } }; Разделяй и властвуй Соль: O(n)..

Разделяй и властвуй
Разделяй и властвуй - это стиль решения проблем, который вовсе не ограничивается проблемами информатики. Это идея решения проблемы рекурсивным образом или разбиения более крупной проблемы на более мелкие подзадачи, которые можно решить легче. Он состоит из трех частей, включая разделить часть, часть завоевать и затем объединить подрешения вместе. Делить Раздел «Разделение» фокусируется на разделении большой проблемы на более мелкие и более управляемые подзадачи. Этот процесс..

Разделяй и властвуй (сортировка слиянием)
Разделяй и властвуй - это алгоритмическая стратегия, в которой проблема разбивается на две или более подзадач одного и того же или родственного типа, решается их и добавляются подзадачи. Давай проясним. В технике «разделяй и властвуй» нам нужно разделить проблему на подзадачи, решить их рекурсивно и объединить подзадачи. Таким образом, мы можем предположить, что, чтобы следовать этой стратегии, нам нужно разделить a на несколько частей, затем победить или решить части и, наконец,..

Как вы реализуете быструю сортировку в Swift?
Быстрая сортировка (также называемая Сортировка с обменом разделами ) – это эффективный алгоритм "разделяй и властвуй", разработанный Тони Хоаром в 1959 году. В худшем случае он занимает O(n²) времени, но в среднем быстрая сортировка занимает log n) быстрее и превосходит Merge и Heap Sort. Определите интерфейс метода для рекурсивного вызова numbers — это массив несортированных Int s. Ваша цель — реализовать алгоритм быстрой сортировки для любого массива с элементами,..