Pull to refresh
47
0
Novus Nota @novusnota

…я знаю как его найти, этот ответ, и я его найду.

Send message

Введение в анализ сложности алгоритмов (часть 4)

Reading time5 min
Views100K
От переводчика: данный текст даётся с незначительными сокращениями по причине местами излишней «разжёванности» материала. Автор абсолютно справедливо предупреждает, что отдельные темы могут показаться читателю чересчур простыми или общеизвестными. Тем не менее, лично мне этот текст помог упорядочить имеющиеся знания по анализу сложности алгоритмов. Надеюсь, что он окажется полезен и кому-то ещё.
Из-за большого объёма оригинальной статьи я разбила её на части, которых в общей сложности будет четыре.
Я (как всегда) буду крайне признательна за любые замечания в личку по улучшению качества перевода.


Опубликовано ранее:
Часть 1
Часть 2
Часть 3

Оптимальная сортировка


Поздравляю! Теперь вы знаете о том, как анализировать сложность алгоритмов, что такое асимптотическая оценка и нотация «большое-О». Вы также в курсе, как интуитивно выяснить является ли сложностью алгоритма O( 1 ), O( log( n ) ), O( n ), O( n2 ) и так далее. Вы знакомы с символами o, O, ω, Ω, Θ и понятием «наихудшего случая». Если вы добрались до этого места, то моя статья уже выполнила свою задачу.

Этот финальный раздел — опциональный. Он несколько сложнее, так что можете не стесняясь пропустить его, если хотите.От вас потребуется сфокусироваться и потратить некоторое время на решение упражнений. Однако, так же здесь будет продемонстрирован очень полезный и мощный способ анализа сложности алгоритмов, что, безусловно, стоит внимания.
Читать дальше →
Total votes 58: ↑54 and ↓4+50
Comments6

«Основание» Азимова наоборот

Level of difficultyEasy
Reading time17 min
Views46K

На Apple TV вышел второй сезон сериала, который экранизирует цикл фантастических романов Азимова об Академии (или Основании, а на самом деле — о Фонде). Я, как и многие, читал их в детстве. До сих пор эти тексты не переносили на экран, так что мне, конечно, хотелось увидеть, как будут визуализированы классические образы ученых, защищающих знание и цивилизацию от хаоса и варварства космических масштабов. Показ нового сезона — повод поделиться тем, что, как мне кажется, получилось у создателей сериала по сравнению с книжным источником.

Читать далее
Total votes 126: ↑121 and ↓5+148
Comments298

В Java 21 собираются реализовать сопоставление с образцом – так, глядишь, я снова на этот язык перейду

Reading time23 min
Views18K

Преуведомление

Вся нотация, используемая в этой статье, не является общепринятой для представления математических выражений. Возможно, вы ранее изучали эту тему либо продолжаете изучать, поэтому заранее прошу прощения, если допустил какие-либо фактические ошибки или некорректно использовал термины.   

Выпуск Java 21 состоялся 19 сентября 2023 года. В этой версии поддерживаются паттерны записи в switch-блоках и выражениях. Такой синтаксис выглядит монументально (как минимум, по меркам Java). Это водораздел, после которого мы вправе говорить, что в Java полноценно поддерживаются паттерны функционального программирования, подобно тому, как это сделано в Kotlin, Rust или C#. Вот и первый пункт, который пробуждает во мне зависть (я Kotlin-разработчик).

Читать далее
Total votes 29: ↑29 and ↓0+29
Comments12

5 советов разработчику перед стартом своего стартапа. Опыт после 750 000 рублей

Level of difficultyEasy
Reading time6 min
Views25K

Всем привет! Меня зовут Ростислав, я full-stack разработчик. Последние 3 года у меня есть хобби - доведение пет-проектов до стадии финансово рентабельных IT продуктов. Сейчас я хочу поделиться своими советами о запуске проекта, исходя из своего опыта.

Читать далее
Total votes 45: ↑41 and ↓4+42
Comments42

Почему мои клиенты не спрашивают, как дела по проекту, пока я над ним работаю

Reading time2 min
Views14K

Поначалу я делал как все: взял проект, ушёл на две-три недели, вернулся с результатом к назначенному времени. Меня удивляло, почему клиенты спрашивали «чё-как?» уже к концу первой недели. Ведь обо всём договорились, я работаю, закончу такого-то числа. Странные!

Читать далее
Total votes 62: ↑58 and ↓4+64
Comments14

[Карьера в IT] Главное: что нужно знать, чтобы найти работу, пройти собеседование и выбрать оффер

Reading time6 min
Views27K

Недавно мы публиковали на Хабре целую серию статей о карьере в IT. Теперь собрали ключевые советы и полезные ссылки из этих материалов. Статью можно использовать в качестве краткого помощника для тех, кто решил сменить работу.

Читать далее
Total votes 21: ↑16 and ↓5+11
Comments0

Самый роскошный радиоконструктор с Али

Level of difficultyEasy
Reading time10 min
Views62K


Вы бы хотели собрать своими руками девятидиапазонный супергетеродинный радиоприёмник с верньером, в прочном красивом корпусе с решёткой громкоговорителя из перфолиста, с отсеками для пальчиковых батареек AA и литиевого аккумулятора BL-5C и даже с функцией неплохого светодиодного фонарика?

Если вы имеете минимальный опыт пайки электронных компонентов поверхностного монтажа, то этот радиоконструктор на основе легендарной микросхемы 2003 вас очень порадует.

Вы спросите, разве на усилителе мощности звуковой частоты TDA2003 или UTC2003 можно построить серьёзный радиоприёмник? Или, может быть, на ULN2003, которую многие привыкли называть «драйвером шагового двигателя», тогда как на самом деле это сборка из семи дарлингтоновых пар?

Сегодня пойдёт речь и о них, и о CD2003 (TA2003) — одной из самых удачных аналоговых микросхем для АМ/ЧМ радио.
Читать дальше →
Total votes 31: ↑28 and ↓3+35
Comments53

Как потратить шесть лет жизни впустую, или история провала

Reading time6 min
Views115K


Нынче на Хабре стали весьма модны и популярны различные «истории успеха», где люди, преодолевая и превозмогая, добиваются чего-то, основывают свой бизнес и находят свое место в жизни. Но никто не любит рассказывать о своих неудачах, провалах, о том, что в какой-то момент они «повернули не туда». Вот этот пост будет таким рассказом, чего в общих не стоит делать, если вы хотите добиться хоть чего-нибудь, основанный на моих личных граблях и истории о том, как я потратил очень много времени зря.

По профилям многих пользователей вижу, что на хабре есть достаточное количество молодых людей 16-22 лет и эта история, наверное, как раз для них. Если вы состоявшийся специалист, данный пост не стоит вашего внимания, просто проходите мимо. Если вы студент, или человек, недавно получивший свою первую работу — u r welcome под кат; возможно, вы вынесете что-то полезное для себя.
Читать дальше →
Total votes 196: ↑158 and ↓38+120
Comments77

Почему я всё время думаю о банковской системе Римской империи

Reading time3 min
Views25K

Что общего между трапезой и банком, как выглядел доллар до нашей эры, почему Иисус начал движение Occupy Wall Street, и кто выдавал льготную ипотеку для айтишников в Древнем Риме. Мужики, этот пост для вас!

Читать далее
Total votes 30: ↑21 and ↓9+21
Comments27

Не навреди. Деликатные советы для наставников, работающих с новичками

Reading time5 min
Views5K

Всем привет! Меня зовут Ольга Болотова, и я Developer Advocate в QIWI. Сейчас я представляю интересы разработчиков, но до этого я была фронтенд-разработчицей, и пять лет работала с новичками, стажёрами и их наставниками. А потом на позиции руководительницы запустила программу стажировок во фронтенд-направлении в моей прошлой компании.

По себе знаю, что стажёры могут обернуться болью и потерянным временем, но могут и стать бриллиантами под руководством наставника. В своей работе я всегда стремилась огранять алмазы и не тратить на это весь рабочий день, оставаться профессионалом и не перегибать палку, выпускать мотивированных, закалённых и уверенных разработчиков. Без ложной скромности скажу так, если вы наставник, готовитесь им стать или просто часто взаимодействуете с новичками, эта статья c советами — мастхэв. 

Читать далее
Total votes 15: ↑10 and ↓5+9
Comments15

Вредные советы при построении Аналитики (Data Lake / DWH / BI) – чего стоит избегать

Reading time5 min
Views6.5K

Всем привет! На связи Артемий, со-автор и преподаватель курсов Data Engineer, DWH Analyst.

Последние месяцы я много занимаюсь рефакторингом кодовой базы, оптимизацией процессов и расчетов в сфере Анализа Данных.

Появилось желание в формате “вредных советов” обратить внимание на набор практик и подходов, которые могут обернуться весьма неприятными последствиями, а порой и вовсе дорого обойтись Вашей компании.

В публикации Вас ожидает:

- Использование select * – всё и сразу

- Употребление чрезмерного количество CTEs (common table expressions)

- NOT DRY (Don’t repeat yourself) – повторение и калейдоскопический характер расчетов

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments2

Обучение наоборот

Reading time3 min
Views78K

Предисловие


Так уж сложилось, что за последнее время я испробовал на себе много разных методов обучения — университет, онлайн курсы, вольные курсы, самообучение, чтение книг и тд. И во всех прослеживается четкая закономерность: сначала дается материал, а после следуют тесты/зачеты/задачи/работы. И чем больше я учусь, тем больше убеждаюсь в несовершенности подобного подхода. Были курсы, которые я посещал полностью и конспектировал, были и такие, которые сдавал не посетив ни одного занятия/лекции. И оглядываясь назад, я не могу определить в каком из вариантов остаток оказывался весомее, при том, что на посещение лекций времени уходило в разы больше.

И родилась у меня такая мысль: а не перевернуть ли этот процесс? То есть сначала давать задание, а потом материал? И не пойти ли еще дальше?
Пойти дальше
Total votes 95: ↑85 and ↓10+75
Comments88

Как онлайн-турнир может отбить желание «доделать на следующей неделе»

Reading time5 min
Views3.8K
Всем привет! Я хочу рассказать об онлайн-соревновании для проектов и стартапов, где я играю уже третий месяц с Loresome в качестве проекта. Это время было самым продуктивным и сфокусированным не только в жизни проекта, но и, наверное, вообще в моей жизни.

Краткое изложение статьи для тех, кому некогда: Pioneer — это онлайн-турнир похожий на хакатон, который никогда не кончается; вы пилите свой проект, каждую неделю пишете отчет размером в 280 символов, голосуете за других участников, получаете фидбек и заряд мотивации, общаетесь с другими игроками со всего мира в тематических чатах. Финалистов награждают различными бонусами и потенциальными инвесторами.

image
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments4

Полный релиз бесплатного интерактивного 700-страничного учебника по тестированию

Level of difficultyEasy
Reading time12 min
Views107K

Гуд ньюз эвриван! Спустя полтора года работы восьми айтишников с суммарным опытом в IT 130 лет достигнут результат в виде учебника по тестированию, которого еще никто и никогда не делал.

Читать далее
Total votes 131: ↑130 and ↓1+158
Comments162

Практическое использование JCStress

Reading time8 min
Views3.9K

Приветствую, в этой статье рассмотрим фреймворк JCStress, созданный для тестирования многопоточного кода и применим его для решения практических задач.

Цель данной статьи - показать читателям использование JCStress не только в лабораторных работах для демонстрации эффектов связанных с JMM, но и для доказательства правильности преобразований кода. Тренироваться будем на кошках JDK.

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments2

Профилирование, ассемблер и все-все-все

Level of difficultyHard
Reading time19 min
Views5.8K

Привет, сегодня будет объёмная и обстоятельная статья о низкоуровневом профилировании и дигностике производительности. Многократно в комментариях к докладам и статьям пользователи высказывали пожелание увидеть не просто перечисление шаблонов "как нужно" и "как не нужно", а целостную историю. Поэтому вот вам статья про конкретный кейс и его историю :). Не удивляйтесь, что начнём мы с JPA, хотя казалось бы где оно и где ассемблер. По ходу дела вы всё поймёте.

Читать далее
Total votes 30: ↑30 and ↓0+30
Comments7

Существование треугольника Шарыгина — это настоящее математическое чудо

Level of difficultyEasy
Reading time2 min
Views169K

Сегодня я хочу рассказать про особый вид треугольников, впервые рассмотренный советским математиком Игорем Федоровичем Шарыгиным. Удивительно, что до ХХ века никто так и не обратил внимание на этот бриллиант.

Читать далее
Total votes 127: ↑120 and ↓7+159
Comments72

Новый чёрный — это чёрно-белый: как работают QR-коды в розничных платежах

Reading time8 min
Views34K

В России растёт популярность QR-кодов для оплаты. Немолодая технология оказалась на пике популярности спустя четверть века с момента появления: вошла с ноги в российский финтех и позволяет совершать платежи при помощи камеры смартфона. Давайте поговорим о том, почему и как это происходит.

Отсканировать
Total votes 42: ↑42 and ↓0+42
Comments112

Управление подписками: много слов о потоках, отписках и утечке памяти

Level of difficultyMedium
Reading time12 min
Views4.8K

Управление подписками — с первого взгляда несложная тема, которая, однако, вызывает у многих проблемы на фронте. Под катом я собрал собственные наблюдения о том, как грамотно выстроить работу с подписками без утечек памяти, увеличения времени загрузки элементов и колоссальных трат бюджета.

За основу я взял библиотеку RxJs, работающую с фреймворком Angular. Однако любителям остальных фреймворков, возможно, это тоже пригодится.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments2

Быстрый двоичный поиск без ветвления

Level of difficultyMedium
Reading time15 min
Views14K

Мои читатели — занятые люди, поэтому сразу перейду к делу. Вот она, самая быстрая обобщённая (и простая) реализация двоичного поиска на C++:

template <class ForwardIt, class T, class Compare>
constexpr ForwardIt sb_lower_bound(
      ForwardIt first, ForwardIt last, const T& value, Compare comp) {
   auto length = last - first;
   while (length > 0) {
      auto rem = length % 2;
      length /= 2;
      if (comp(first[length], value)) {
         first += length + rem;
      }
   }
   return first;
}

Тот же интерфейс функции, что и у std::lower_bound, но вдвое быстрее и короче. «Без ветвления», потому что if компилируется в команду условной передачи, а не в ветвление/условный переход. Ближе к концу статьи мы изучим опции компилятора и даже более быстрые версии полностью без ветвления. Для понимания этой статьи не нужны особые знания в C++. Достаточно понимать, что итераторы (first и last) по сути являются указателями на элементы массива, хотя могут указывать на один элемент дальше, чем последний элемент массива. Можете не обращать внимания на template, class, constexpr и &. Вот если бы существовал быстрый и чистый язык, работающий на уровне железа...1 2
Читать дальше →
Total votes 78: ↑78 and ↓0+78
Comments6

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

DevOps, Web Developer