Cортировка строк массива по длине слов swift

swift3

#1

Всем привет! Облазил Инет и везде, в том числе и здесь сортируют массив из чисел, по возрастанию и убыванию итд, но нигде нет сортировки строк массива по длине слов! Тоесть
если и есть, то уже морально устарел синтаксис. Знаю как то пузырьком можно и с использованием .character, но снова новый синтаксис ничего не срабатывает . Хотелось бы увидеть как можно отсортировать:

let string = [“planet”, “motorcycle”, “I”, “crack”, “you”, “Interpolation” “day”, “clouds”, “insane”, “laptop”, “processor”, “skull”]

  1. Сначала большие, потом маленькие слова
  2. 1 наоборот
  3. По алфавиту
    Желательно с объяснениями короткими или хотяб укажите в каком разделе на сайте можно это проштудировать.

#2

Сортировка по алфавиту.

let names = ["name", "name" ...]

func backward(_ s1: String, _ s2: String) -> Bool {
return s1 < s2
//    return s1 > s2
}

`var reversedNames = names.sorted(by: backward)  // создаешь свою сортировку`

Для символов в строках, “больше чем” означает “появляется в алфавите позже, чем”. Это означает что буква “B” больше чем буква “А”, а строка “Tom” больше чем строка “Tim”. Это делает обратную алфавитную сортировку

и еше можно так

let reversedName = names.sorted(by: {$0 < $1})

Здесь, $0 и $1 обращаются к первому и второму String параметру замыкания.

и еще короче

let reversedName = names.sorted(by: <)


#3

s1.character.count > s2.character.count


#4

Что-то вы намудрили

Сортировка по алфавиту:

    let sotredArr = arr.sorted(by: <)

обратная

    let sotredArr = arr.sorted(by: >)

по длинне

    let sotredArr = arr.sorted() { $0.characters.count > $1. characters.count }

Не нужно создавать никаких функций.


#5

я прописал 3 метода сортировки. чтобы понял суть