HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Сортировка - одна из самых распространённых операций над коллекциями. В Go для работы со срезами предусмотрены готовые функции в пакете slices, которые упрощают сортировку без необходимости писать собственные алгоритмы.</p>
1 <p>Сортировка - одна из самых распространённых операций над коллекциями. В Go для работы со срезами предусмотрены готовые функции в пакете slices, которые упрощают сортировку без необходимости писать собственные алгоритмы.</p>
2 <h2>Сортировка по возрастанию</h2>
2 <h2>Сортировка по возрастанию</h2>
3 <p>Для сортировки среза с элементами любого упорядоченного типа (например, int, string) используется функция slices.Sort():</p>
3 <p>Для сортировки среза с элементами любого упорядоченного типа (например, int, string) используется функция slices.Sort():</p>
4 <h2>Изменяется ли исходный срез?</h2>
4 <h2>Изменяется ли исходный срез?</h2>
5 <p>Важно помнить, что slices.Sort() изменяет исходный срез на месте. После вызова slices.Sort(nums) срез nums будет отсортирован, а новый срез не создаётся. Если нужно получить новый отсортированный срез, используйте slices.Sorted(), которая возвращает копию с отсортированными элементами:</p>
5 <p>Важно помнить, что slices.Sort() изменяет исходный срез на месте. После вызова slices.Sort(nums) срез nums будет отсортирован, а новый срез не создаётся. Если нужно получить новый отсортированный срез, используйте slices.Sorted(), которая возвращает копию с отсортированными элементами:</p>
6 <h2>Проверка, отсортирован ли срез</h2>
6 <h2>Проверка, отсортирован ли срез</h2>
7 <p>Иногда нужно проверить, находится ли срез в порядке возрастания. Для этого есть slices.IsSorted():</p>
7 <p>Иногда нужно проверить, находится ли срез в порядке возрастания. Для этого есть slices.IsSorted():</p>
8 <h2>Сортировка строк</h2>
8 <h2>Сортировка строк</h2>
9 <p>Срез строк сортируется аналогично:</p>
9 <p>Срез строк сортируется аналогично:</p>
10 <p>Сортировка выполняется в лексикографическом порядке (по Unicode-кодам символов).</p>
10 <p>Сортировка выполняется в лексикографическом порядке (по Unicode-кодам символов).</p>
11 <h2>Сортировка с пользовательской логикой</h2>
11 <h2>Сортировка с пользовательской логикой</h2>
12 <p>Если нужно задать собственное правило сортировки, можно использовать slices.SortFunc(). Например, сортировка строк по длине:</p>
12 <p>Если нужно задать собственное правило сортировки, можно использовать slices.SortFunc(). Например, сортировка строк по длине:</p>
13 <p>Функция-компаратор должна возвращать:</p>
13 <p>Функция-компаратор должна возвращать:</p>
14 <ul><li>Отрицательное значение, если a &lt; b,</li>
14 <ul><li>Отрицательное значение, если a &lt; b,</li>
15 <li>Ноль, если a == b,</li>
15 <li>Ноль, если a == b,</li>
16 <li>Положительное значение, если a &gt; b.</li>
16 <li>Положительное значение, если a &gt; b.</li>
17 </ul><h2>Обратный порядок</h2>
17 </ul><h2>Обратный порядок</h2>
18 <p>Чтобы отсортировать в обратном порядке, можно:</p>
18 <p>Чтобы отсортировать в обратном порядке, можно:</p>
19 <ol><li>Отсортировать по возрастанию.</li>
19 <ol><li>Отсортировать по возрастанию.</li>
20 <li>Развернуть срез с помощью slices.Reverse().</li>
20 <li>Развернуть срез с помощью slices.Reverse().</li>
21 </ol><h2>Минимальные и максимальные значения</h2>
21 </ol><h2>Минимальные и максимальные значения</h2>
22 <p>Пакет slices также предоставляет функции для нахождения минимального и максимального элементов:</p>
22 <p>Пакет slices также предоставляет функции для нахождения минимального и максимального элементов:</p>
23 <h2>Вывод</h2>
23 <h2>Вывод</h2>
24 <ul><li><strong>Функции slices.Sort() и slices.SortFunc() изменяют исходный срез.</strong></li>
24 <ul><li><strong>Функции slices.Sort() и slices.SortFunc() изменяют исходный срез.</strong></li>
25 - <li>Если нужен новый отсортированный срез, используйте slices.Clone() перед сортировкой.</li>
25 + <li>Если нужен новый отсортированный срез, используйте slices.Sorted() или slices.Clone() перед сортировкой.</li>
26 <li>Для кастомных правил сортировки - slices.SortFunc().</li>
26 <li>Для кастомных правил сортировки - slices.SortFunc().</li>
27 <li>Проверить порядок можно через slices.IsSorted().</li>
27 <li>Проверить порядок можно через slices.IsSorted().</li>
28 <li>Минимум и максимум вычисляются с помощью slices.Min() и slices.Max().</li>
28 <li>Минимум и максимум вычисляются с помощью slices.Min() и slices.Max().</li>
29 </ul>
29 </ul>