Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика XCode

Разработчик

Справочное руководство по библиотеке стандарта Swift

PDF
На этой странице

Алгоритмы

Библиотека стандарта 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 = 6
  • if 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."