Основы Go
Теория: Сортировка срезов
Сортировка — одна из самых распространённых операций над коллекциями. В Go для работы со срезами предусмотрены готовые функции в пакете slices, которые упрощают сортировку без необходимости писать собственные алгоритмы.
Сортировка по возрастанию
Для сортировки среза с элементами любого упорядоченного типа (например, int, string) используется функция slices.Sort():
Изменяется ли исходный срез?
Важно помнить, что slices.Sort() изменяет исходный срез на месте. После вызова slices.Sort(nums) срез nums будет отсортирован, а новый срез не создаётся. Если нужно получить новый отсортированный срез, используйте slices.Sorted(), которая возвращает копию с отсортированными элементами:
Проверка, отсортирован ли срез
Иногда нужно проверить, находится ли срез в порядке возрастания. Для этого есть slices.IsSorted():
Сортировка строк
Срез строк сортируется аналогично:
Сортировка выполняется в лексикографическом порядке (по Unicode-кодам символов).
Сортировка с пользовательской логикой
Если нужно задать собственное правило сортировки, можно использовать slices.SortFunc().
Например, сортировка строк по длине:
Функция-компаратор должна возвращать:
- Отрицательное значение, если
a < b, - Ноль, если
a == b, - Положительное значение, если
a > b.
Обратный порядок
Чтобы отсортировать в обратном порядке, можно:
- Отсортировать по возрастанию.
- Развернуть срез с помощью
slices.Reverse().
Минимальные и максимальные значения
Пакет slices также предоставляет функции для нахождения минимального и максимального элементов:
Вывод
- Функции
slices.Sort()иslices.SortFunc()изменяют исходный срез. - Если нужен новый отсортированный срез, используйте
slices.Clone()перед сортировкой. - Для кастомных правил сортировки —
slices.SortFunc(). - Проверить порядок можно через
slices.IsSorted(). - Минимум и максимум вычисляются с помощью
slices.Min()иslices.Max().





