Pull to refresh
157
0
Валерий Макаров @valemak

Программист

Send message

Удивительная история развития сортировки в JDK

Level of difficultyMedium
Reading time11 min
Views5.7K

Как вы считаете, если выполнить java.util.Arrays.sort(), то какая сортировка будет вызвана? Quicksort? Timsort? И та, и другая, потому что для объектов вызывается Timsort, а для примитивов (чисел int, long, float и так далее) — Dual-Pivot Quicksort. В JDK 6 для объектов использовался стандартный Merge sort, а для чисел классическая реализация Quicksort с одним опорным элементом, предложенная Джоном Бентли и Дугласом МакИлрой. В JDK 7 оба алгоритма поменялись: теперь объекты сортируются с помощью Timsort, автор Тим Петерс, а для простых типов данных используется Dual-Pivot Quicksort, предложенный мною вместе с Джоном Бентли и Джошем Блоком в 2009 году. Эта сортировка используется более 15 лет не только в JDK, но и в Android (хотя и немного устаревшая версия).

А зачем нам вообще второй алгоритм сортировки, если есть Timsort? Почему не использовать один и для объектов, и для примитивов? Сегодня я, как автор, расскажу историю Dual-Pivot Quicksort: как он начинался, как развивался и как продолжает развиваться сейчас.

Читать далее
Total votes 25: ↑25 and ↓0+31
Comments14

Математическая продлёнка. Вокруг ленты Мёбиуса

Level of difficultyEasy
Reading time13 min
Views8.1K

Лента или лист Мëбиуса — верный друг всех адептов занимательной математики. Это неориентируемое гладкое двумерное многообразие можно без труда вложить в трёхмерное пространство, склеив из бумажной полоски, а потом эффектно разрезать на потеху публике. Но кого можно удивить лентой Мёбиуса на Хабре? Знаем, клеили, резали! Но всё же, я надеюсь подарить вам ещё несколько незаезженных топологических инсайтов на эту тему. Более того, в ней есть ещё что изучать, и я поделюсь с вами двумя относительно недавними исследованиями ленты Мёбиуса, опубликованными в 2010-м и 2014-х годах.

Предупреждение! Это практический пост. Предлагаемые эксперименты и наблюдения настоятельно рекомендуется провести самостоятельно, и очень желательно, — с детьми! Никакие картинки не дадут того опыта, который можно получить оперируя своими руками! А уж такой радости и подавно!

Читать далее
Total votes 46: ↑46 and ↓0+65
Comments6

[В закладки] 28 фишек Telegram, о которых знают не все

Reading time9 min
Views27K

Telegram продолжает развиваться. Собрали новую подборку интересных и скрытых особенностей мессенджера, которые делают его еще удобнее.

Читать далее
Total votes 30: ↑19 and ↓11+15
Comments21

JavaScript: структуры данных и алгоритмы. Часть 3

Level of difficultyMedium
Reading time46 min
Views5.5K


Привет, друзья!


В этой серии статей мы разбираем структуры данных и алгоритмы, представленные в этом замечательном репозитории. Это третья часть серии.



Сегодня мы будем говорить о таких структурах данных, как деревья. В этой статье мы рассмотрим двоичное дерево поиска, АВЛ-дерево и красно-черное дерево.


Код, представленный в этой и других статьях серии, можно найти в этом репозитории.


Интересно? Тогда прошу под кат.

Читать дальше →
Total votes 19: ↑19 and ↓0+32
Comments0

Что наука говорит о том, как правильно вести беседу

Level of difficultyEasy
Reading time11 min
Views5.5K

Если вы когда-нибудь разговаривали с кем-то, а потом чувствовали, что лучше бы потратили время на разговор с кирпичной стеной, вы наверняка согласитесь с наблюдениями Ребекки Уэст. «Не существует такого понятия, как разговор, — написала писательница и литературный критик в своём сборнике рассказов «Суровый голос». — Это иллюзия. Есть пересекающиеся монологи, вот и всё».

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

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

Читать далее
Total votes 14: ↑13 and ↓1+16
Comments0

Анимация доски Гальтона на Python и manim

Reading time9 min
Views4K

Многие видели математические видео с канала 3blue1brown. Оригинальный стиль, отличные визуализации самых разных математических понятий. Как они были сделаны? Грант Сандерсон, автор канала 3blue1brown, написал специальную библиотеку на питоне, manim, для создания своих видео. Библиотека оказалась популярной, был сделан форк и сложилось сообщество для ее дальнейшего развития. Мне стало интересно и я захотел научиться делать похожие видео, для примера будет анимация доски Гальтона. Математика присутствует, анимация интересная, что из этого вышло - написано в статье.

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

Шпаргалка по XPath и CSS-селекторам

Level of difficultyMedium
Reading time5 min
Views15K

Для написания автотестов используются XPath и CSS-селекторы. Они помогают найти элемент на странице, чтобы потом с ним как-то взаимодействовать (кликнуть, ввести текст, или что-то другое).

Я видела много статей о том, что это вообще такое, но мне очень не хватало шпаргалки по разным селекторам, причем в разрезе «Вот он в CSS и он же в XPath» для сравнения. 

А мне такое для студентов надо. Поэтому решила сделать сама. Вдохновлялась страничкой «Xpath cheatsheet», но сделала на свой вкус — под автоматизацию, а не XPath вообще. И с комментариями, с ними удобнее. 

Пишите, если где-то накосячила. Хотя я все селекторы проверяла на тестовых страницах, но мало ли… И надеюсь, вам такая шпаргалка тоже пригодится! =)

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

Как стать Python-разработчиком бесплатно? Программа обучения с нуля

Level of difficultyEasy
Reading time2 min
Views33K

Если вбить фразу «python разработка» в поисковую строку, можно найти огромное количество курсов по данному направлению. Дело в том, что все курсы являются платными и, как правило, имеют ценник в несколько десятков тысяч рублей. 

Чтобы разбавить обилие платных курсов, мы подготовили для вас программу обучения «Python-разработчик с нуля», которая состоит только из бесплатных курсов.

Читать далее
Total votes 34: ↑30 and ↓4+27
Comments10

Шахматы как инструмент успеха: тайные ходы для достижения эффективности и продуктивности в любой сфере

Level of difficultyEasy
Reading time13 min
Views12K

Недавно одна из известнейших развлекательных компаний опубликовала любопытные данные о всплеске интереса к шахматам, согласно которым пользователи сети вдруг стали чаще искать в интернете все о древнеиндийской игре. Если верить этой информации, то значительно выросло и число новых игроков на онлайн‑платформе сhess.com, и количество гугл‑запросов «как играть в шахматы». Причиной оказался сериал «Ход королевы», авторы которого и проводили собственное исследование о внезапной новой популярности шахмат.

Моя же душевная привязанность к этой наилучшей гимнастике для ума никак не связана с кино, а длится с шестилетнего возраста, когда отец привел меня в шахматный кружок. С тех пор я много раз благодарил тот день, потому что уверен — шахматы помогли мне и в обычной жизни, и в профессиональной. Сейчас я работаю ведущим системным аналитиком и мой рецепт в борьбе со стрессовыми нагрузками (без этого не обходится) — 64 клетки и 32 фигуры на монохромной доске. Поэтому предлагаю поговорить о пользе, которые несут в себе навыки, приобретенные с помощью шахмат.

Читать далее
Total votes 33: ↑32 and ↓1+53
Comments20

Темный лес или Лесной пожар?

Level of difficultyMedium
Reading time9 min
Views9.9K

Несколько лет назад я прочитал «Задачу трех тел» Лю Цысиня, очень достойная научная фантастика. В ней изложена концепция «тёмного леса», с которой я не смог согласится.
Предлагаю вам альтернативную концепцию «Лесной пожар», описывающую как могли бы взаимодействовать между собой цивилизации будущего.

Читать далее
Total votes 23: ↑19 and ↓4+28
Comments135

Что стоит почитать по Python в 2024 году? Пять хороших книг

Reading time3 min
Views23K

Литературы никогда не бывает много — ни художественной, ни технической. Это касается и книг по языкам программирования, включая Python. Разработчикам, как начинающим, так и опытным, нужны надёжные руководства для того, чтобы повышать свой профессиональный уровень. В сегодняшней подборке — пять книг, которые могут быть полезны для любого Python-разработчика.

Читать далее
Total votes 18: ↑11 and ↓7+14
Comments8

Самый лучший в мире курс по Машинному обучению — Алгоритмы Машинного обучения с нуля

Reading time1 min
Views25K

Краткий обзор курса, который я недавно закончил пилить на степике. Курс хардкорный :) В нем необходимо с нуля писать алгоритмы машинного. Наверное это один из лучший способов досконально разобраться в алгоритме.

Курс бесплатный: https://stepik.org/course/68260/promo

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

Парсинг веб-сайтов: взгляд изнутри

Level of difficultyEasy
Reading time5 min
Views10K

Статья о парсинге веб-сайтов освещает следующие аспекты:

• Понятия парсинга и скрапинга;
• Законность и этика парсинга;
• Парсинг с использованием requests и BeautifulSoup;
• Статические страницы;
• Динамические страницы;
• Работа с API;
• Защита от парсеров;
• Способы обхода.

Читать далее
Total votes 14: ↑10 and ↓4+9
Comments10

Актуально ли сегодня ООП?

Level of difficultyMedium
Reading time11 min
Views60K

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

Термин объектно-ориентированное программирование придумал Алан Кэй. Кэй был членом команды PARC, которая изобрела графический интерфейс пользователя, сделавший таким полезным современный Интернет, персональные компьютеры, планшеты и смартфоны. Ещё она изобрела некоторые из объектно-ориентированных языков, на которых мы сегодня реализуем эти GUI.

Если отсечь все эмоции, связанные с ООП, то что останется? По-прежнему ли ООП является эффективным инструментом разработки ПО, или оно превратилось в устаревшее увлечение? Профессионалам важно знать ответ на этот вопрос!
Читать дальше →
Total votes 80: ↑60 and ↓20+65
Comments179

Почему так важна открытость и как её прокачать

Reading time6 min
Views7.3K

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

Под катом собрали полезные советы и материалы, которые помогут развить открытость.

Читать далее
Total votes 22: ↑16 and ↓6+12
Comments4

Когнитивные искажения, о которых стоит помнить

Reading time15 min
Views87K

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

Также их можно представить как простые правила, которым следует мозг, чтобы обрабатывать поступающую информацию с минимальными затратами.

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

Читать далее
Total votes 84: ↑76 and ↓8+79
Comments36

Правда и мифы об энтропии. Как работает второй закон термодинамики?

Level of difficultyMedium
Reading time22 min
Views39K

Энтропия – одна из самых важных и в то же время трудных для понимания физических концепций, без которой невозможно представить себе научную картину мира. Энтропия является неотъемлемым свойством макроскопических систем, но, в отличие от температуры, давления или объёма, её нельзя измерить с помощью приборов. Ситуацию усугубляет тот факт, что у энтропии есть множество определений, на первый взгляд никак между собой не связанных. В термодинамике это мера необратимого рассеяния или бесполезности энергии, в статистической физике – вероятность осуществления некоторого макроскопического состояния системы, в теории динамических систем – мера хаоса в поведении системы, в теории информации – мера неопределённости источника сообщений, определяемая вероятностями появления тех или иных символов при их передаче. Создаётся впечатление, что гуманитарию разобраться в этом без знания формул – непосильная задача. Но я покажу обратное. Сразу оговорюсь, что в данной статье будут рассмотрены только термодинамический и статистический аспекты энтропии, а о том, как энтропия связана с информацией, я расскажу как-нибудь отдельно.

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

Алгоритм minimax в шахматах

Level of difficultyMedium
Reading time6 min
Views10K

Привет, Хабр!

Сейчас, когда вы слышите про ИИ в шахматах, наверняка первое, что приходит в голову – это AlphaZero, который "научился" играть в шахматы, превзойдя чемпионов мира, не имея никакого предварительного знания об игре. Но позвольте, это же только верхушка айсберга!

Не будем тратить время на объяснение того, как двигаются фигуры – это вы и так знаете. В сегодняшней статьи мы разберем алогоритм Minimax.

Читать далее
Total votes 25: ↑16 and ↓9+12
Comments5

Критерий Келли

Reading time9 min
Views14K

От умного риска до победы близко. Кто не рискует, тот не пьет шампанского. Без риска и жизнь пресна.

Эти и многие другие пословицы и поговорки про риск, знакомые нам с раннего детства, закрепляются на подсознательном уровне и, как правило, создают положительный образ риска. Однако на практике риск приносит далеко не только выигрыши. Например, портфель инвестора, который слишком часто рискует и вкладывает весь свой капитал сразу, в краткосрочной перспективе может взлететь до небес, но в долгосрочной непременно приведет к огромным финансовым потерям. Но можно ли каким‑нибудь образом найти золотую середину? Безусловно, и в этом нам поможет критерий Келли.

Читать далее
Total votes 31: ↑29 and ↓2+37
Comments11

Как понять (и простить) теорию вероятностей?

Level of difficultyEasy
Reading time6 min
Views7.5K

Всем привет! На связи вновь Меликян Маргарита, мы уже знакомились в статье, где поговорили немного о математическом анализе, а теперь (после принятых зачётов и экзаменов) захотелось сказать пару слов и по поводу курса теории вероятностей.

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

Читать далее
Total votes 9: ↑8 and ↓1+10
Comments3
1
23 ...

Information

Rating
Does not participate
Location
Кировоград, Кировоградская обл., Украина
Date of birth
Registered
Activity