Сортировка, выбор и поиск

Сортировка

Поскольку Spire предоставляет специализированный класс типов упорядочения, имеет смысл также предоставить свои собственные методы для выполнения операций на основе Order. Эти методы определены в массивах и "возникают на месте", изменяя массив. Другие коллекции могут воспользоваться преимуществами сортировки путем преобразования в массив, последующей сортировки и обратного преобразования (что уже делает платформа коллекций Scala в большинстве случаев). Таким образом, Spire поддерживает как изменяемые массивы, так и неизменяемые коллекции.

Методы сортировки можно найти в объекте spire.math.Sorting. Это:

Оба mergeSort и quickSort делегируют insertionSort при работе с массивами (или срезами) ниже определенной длины. Поэтому правильнее было бы назвать их гибридными сортировками.

Выборка

Методы выбора можно найти в аналогичном объекте spire.math.Selection. Учитывая массив и индекс k, эти методы помещают k-й наибольший элемент в позицию k, гарантируя, что все предыдущие элементы меньше или равны, а все последующие элементы больше или равны k-му элементу.

Определено два метода:

Поиск

Методы поиска расположены в объекте spire.math.Searching. Учитывая отсортированный массив (или индексированную последовательность), эти методы найдут индекс нужного элемента (или вернут -1, если он не найден).

Поиск также поддерживает более эзотерический метод: minimalElements. Этот метод возвращает минимальные элементы частично упорядоченного набора.


Ссылки: