0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Сортировка массивов - базовая алгоритмическая задача, которую нередко спрашивают на собеседованиях. Однако в реальном коде массивы сортируют, используя уже готовые функции стандартной библиотеки. В JavaScript сортировка выполняется с помощью метода sort() массивов:</p>
1
<p>Сортировка массивов - базовая алгоритмическая задача, которую нередко спрашивают на собеседованиях. Однако в реальном коде массивы сортируют, используя уже готовые функции стандартной библиотеки. В JavaScript сортировка выполняется с помощью метода sort() массивов:</p>
2
<p>Тогда для чего задают подобные вопросы? Обычно собеседующий хочет узнать следующее:</p>
2
<p>Тогда для чего задают подобные вопросы? Обычно собеседующий хочет узнать следующее:</p>
3
<ol><li>Насколько кандидат вообще в курсе о существовании алгоритмов</li>
3
<ol><li>Насколько кандидат вообще в курсе о существовании алгоритмов</li>
4
<li>Способен ли он программировать (составлять программу сам, думая своей головой)</li>
4
<li>Способен ли он программировать (составлять программу сам, думая своей головой)</li>
5
<li>Как работает его алгоритмическое мышление</li>
5
<li>Как работает его алгоритмическое мышление</li>
6
</ol><p>Знание алгоритмов действительно влияет на то, как мы думаем и насколько быстро соображаем. И хотя невозможно знать все алгоритмы, нужно хотя бы иметь представление о самых ключевых и в идеале уметь их реализовывать. В<a>нашем списке</a>рекомендуемых книг есть как минимум одна книга, полностью посвященная алгоритмам.</p>
6
</ol><p>Знание алгоритмов действительно влияет на то, как мы думаем и насколько быстро соображаем. И хотя невозможно знать все алгоритмы, нужно хотя бы иметь представление о самых ключевых и в идеале уметь их реализовывать. В<a>нашем списке</a>рекомендуемых книг есть как минимум одна книга, полностью посвященная алгоритмам.</p>
7
<p>Кроме того, Роберт Мартин в своей книге "Идеальный программист" рассказывает о подходе<a>Ката</a>- понятии, взятом из боевых искусств:</p>
7
<p>Кроме того, Роберт Мартин в своей книге "Идеальный программист" рассказывает о подходе<a>Ката</a>- понятии, взятом из боевых искусств:</p>
8
<blockquote><p>Принцип изучения боевого искусства на основе ката состоит в том, что повторяя ката многие тысячи раз, практик боевого искусства приучает свое тело к определенного рода движениям, выводя их на бессознательный уровень. Таким образом, попадая в боевую ситуацию, тело работает "само" на основе рефлексов, вложенных многократным повторением ката. Также считается, что ката обладают медитативным воздействием.</p>
8
<blockquote><p>Принцип изучения боевого искусства на основе ката состоит в том, что повторяя ката многие тысячи раз, практик боевого искусства приучает свое тело к определенного рода движениям, выводя их на бессознательный уровень. Таким образом, попадая в боевую ситуацию, тело работает "само" на основе рефлексов, вложенных многократным повторением ката. Также считается, что ката обладают медитативным воздействием.</p>
9
</blockquote><p>Роберт Мартин рекомендует время от времени решать классические алгоритмические задачки для поддержания формы. Эта тема стала настолько популярной, что если загуглить<em>javascript github kata</em>, то вы увидите множество репозиториев с подобными задачками.</p>
9
</blockquote><p>Роберт Мартин рекомендует время от времени решать классические алгоритмические задачки для поддержания формы. Эта тема стала настолько популярной, что если загуглить<em>javascript github kata</em>, то вы увидите множество репозиториев с подобными задачками.</p>
10
<h2>Сортировка</h2>
10
<h2>Сортировка</h2>
11
<p>Способов сортировать массив достаточно много. Самый популярный для обучения -<a>пузырьковая сортировка (bubble sort)</a>.</p>
11
<p>Способов сортировать массив достаточно много. Самый популярный для обучения -<a>пузырьковая сортировка (bubble sort)</a>.</p>
12
<p>Алгоритм состоит из повторяющихся проходов по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются N-1 раз или до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает - массив отсортирован. При каждом проходе алгоритма по внутреннему циклу, очередной наибольший элемент массива ставится на свое место в конце массива рядом с предыдущим "наибольшим элементом", а наименьший элемент перемещается на одну позицию к началу массива ("всплывает" до нужной позиции, как пузырек в воде. Отсюда и название алгоритма).</p>
12
<p>Алгоритм состоит из повторяющихся проходов по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются N-1 раз или до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает - массив отсортирован. При каждом проходе алгоритма по внутреннему циклу, очередной наибольший элемент массива ставится на свое место в конце массива рядом с предыдущим "наибольшим элементом", а наименьший элемент перемещается на одну позицию к началу массива ("всплывает" до нужной позиции, как пузырек в воде. Отсюда и название алгоритма).</p>
13
<p>Весь код этой функции делится на два уровня:</p>
13
<p>Весь код этой функции делится на два уровня:</p>
14
<ol><li>Внутренний цикл<em>for</em>, который проходит по массиву от начала до конца, меняя элементы попарно, если нужно сортировать</li>
14
<ol><li>Внутренний цикл<em>for</em>, который проходит по массиву от начала до конца, меняя элементы попарно, если нужно сортировать</li>
15
<li>Внешний цикл<em>do...while</em>, который определяет, когда нужно остановиться. Обратите внимание, что в худшем случае этот цикл выполнится coll.length раз, что совпадает с теоретическим худшим случаем этого алгоритма, при котором самый большой или маленький элемент находятся в противоположных концах массива от сортированного варианта</li>
15
<li>Внешний цикл<em>do...while</em>, который определяет, когда нужно остановиться. Обратите внимание, что в худшем случае этот цикл выполнится coll.length раз, что совпадает с теоретическим худшим случаем этого алгоритма, при котором самый большой или маленький элемент находятся в противоположных концах массива от сортированного варианта</li>
16
</ol><p>Пузырьковая сортировка - самый простой и интуитивно понятный алгоритм сортировки. Очень полезно уметь реализовывать по памяти. Попробуйте сделать это на собственном компьютере, не подсматривая в теорию.</p>
16
</ol><p>Пузырьковая сортировка - самый простой и интуитивно понятный алгоритм сортировки. Очень полезно уметь реализовывать по памяти. Попробуйте сделать это на собственном компьютере, не подсматривая в теорию.</p>