Алгоритмы
Библиотека стандарта Swift содержит множество алгоритмов для помощи с общими задачами, включая сортировку, открытие и еще много.
Больше предстоящей информации.
Сортировка
вид (_:)
Сортирует массив сопоставимых элементов на месте.
Объявление
func sort<T: Comparable>(inout array: [T])
Обсуждение
Используйте эту функцию для сортировки непостоянного массива на месте с помощью < оператор, требуемый соответствием к Comparable протокол. Все элементы в массиве должны иметь типы, соответствующие Comparable протокол, и < оператор должен быть определен как строгое слабое упорядочивание по элементам:
var array = [5, 1, 6, 4, 2, 3]sort(&array)// array is [1, 2, 3, 4, 5, 6]
Можно только использовать эту функцию с массивом, объявленным с помощью var ключевое слово (т.е. переменная):
let constantArray = [5, 1, 6, 4, 2, 3]sort(&constantArray)// Fatal Error: cannot mutate a constant array
Алгоритм сортировки не стабилен и таким образом может изменить относительное упорядочивание элементов, выдерживающих сравнение, равняется.
вид (_: _:)
Сортирует массив элементов на месте согласно указанному закрытию.
Объявление
func sort<T>(inout array: [T], isOrderedBefore: (T, T) -> Bool)
Обсуждение
Используйте эту функцию для сортировки непостоянного массива элементов на месте с помощью закрытия. Закрытие должно возвратить булево значение, чтобы указать, в порядке возрастания ли эти два элемента (true) или порядок по убыванию (false):
var array = [5, 1, 3, 4, 2, 6]sort(&array) { $0 > $1 }// array is [6, 5, 4, 3, 2, 1]
Можно только использовать эту функцию с массивом, объявленным с помощью var ключевое слово (т.е. переменная):
let constantArray = [5, 1, 6, 4, 2, 3]sort(&constantArray) { $0 > $1 }// Fatal Error: cannot mutate a constant array
isOrderedBefore закрытие должно определить строгое слабое упорядочивание по элементам в массиве.
Алгоритм сортировки не стабилен и таким образом может изменить относительное упорядочивание элементов для который isOrderedBefore не устанавливает порядок.
сортированный (_:)
Возвращает массив, содержащий сортированные элементы последовательности.
Объявление
func sorted<C: SequenceType where C.Generator.Element: Comparable>(source: C) -> [C.Generator.Element]
Обсуждение
Используйте эту функцию для сортировки последовательности с помощью < оператор, требуемый соответствием к Comparable протокол. Все элементы в source должен иметь типы, соответствующие Comparable протокол, и < оператор должен быть определен как строгое слабое упорядочивание по элементам:
let array = [5, 1, 6, 4, 2, 3]let result = sorted(array)// result is [1, 2, 3, 4, 5, 6]
Алгоритм сортировки не стабилен и таким образом может изменить относительное упорядочивание элементов, выдерживающих сравнение, равняется.
сортированный (_: _:)
Возвращает массив, содержащий сортированные элементы последовательности согласно указанному закрытию.
Объявление
func sorted<C: SequenceType>(source: C, isOrderedBefore: (C.Generator.Element, C.Generator.Element) -> Bool) -> [C.Generator.Element]
Обсуждение
Используйте эту функцию для сортировки последовательности с помощью закрытия. Закрытие должно возвратить булево значение, чтобы указать, в порядке возрастания ли эти два элемента (true) или порядок по убыванию (false):
let array = [5, 1, 3, 4, 2, 6]let result = sorted(array) { $0 > $1 }// result is [6, 5, 4, 3, 2, 1]
isOrderedBefore закрытие должно определить строгое слабое упорядочивание по элементам в массиве.
Алгоритм сортировки не стабилен и таким образом может изменить относительное упорядочивание элементов для который isOrderedBefore не устанавливает порядок.
Нахождение
найдите (_: _:)
Возвращает дополнительный индекс, содержащий результат попытки найти первый индекс, где данное значение появляется в указанном наборе.
Объявление
func find<C: CollectionType where C.Generator.Element: Equatable>(domain: C, value: C.Generator.Element) -> C.Index?
Обсуждение
Используйте эту функцию для нахождения первого индекса, где указанное значение появляется в наборе. Функция возвращает дополнительное индексное значение (C.Index?) — если указанное значение не найдено, возвращенное индексное значение nil. Все элементы в наборе должны иметь типы, соответствующие Equatable протокол.
let array = [5, 1, 6, 4, 2, 3]let valueToFind = 6if let index = find(array4, valueToFind) {println("Found the value \(valueToFind) at index \(index).")} else {println("Couldn't find the value \(valueToFind) in the array.")}// prints "Found the value 6 at index 2."
