Как отсортировать массив по одному из элементов? - PullRequest
0 голосов
/ 19 октября 2019

Я создал псевдоним - typealias частотSymbol = (String, Double) . Я создал массив, используя псевдоним в качестве типа данных частотSymbol. Затем я заполнил этот массив элементами, и теперь мне нужно отсортировать этот массив по элементам Double. Как мне это сделать?

typealias frequenciesSymbol = (String, Double)

// МЫ СЧИТАЕМ ЧАСТОТУ ВСТРЕЧИ КАЖДОГО СИМВОЛА

var frequencies2 = [Double](repeating: 0, count: 33)
for c in outputText.unicodeScalars {
    switch c {
    case "а"..."я":
        frequencies2[Int(c.value - UnicodeScalar("а").value)] += 1
    default:
        break
    }
}

// ЧАСТОТА ПЕРЕДАЧИ В%

for i in 0..<(frequencies2.count) {
    frequencies2[i] = (frequencies2[i] * 100) / Double(outputText.count)
}

// СОЗДАТЬ Массив, в котором мы формируем ЧАСТОТУ В СООТВЕТСТВИИ С СИМВОЛАМИ С СИМВОЛАМИ

var frequenciesOutputText = [frequenciesSymbol]()

// ПИСАТЬ Массив значений ЧАСТОТЫ ПО СИМВОЛУ

for i in 0..<(frequencies2.count-1) {
    frequenciesOutputText.append((rus[i], Double(frequencies2[i])))
    print("\(rus[i]) - \(frequencies2[i])%")
}

// СОРТИРОВАТЬ Массив по частоте

Я хочу получить что-то вроде этого

("о", 10.97)% ("е", 8.45)% ("а", 8.01)% ("и", 7,35)% ("н", 6,7)% ("т", 6,26)% ("с", 5,47)% ("р", 4,73)% ("в", 4,54)% ("л", 4,4)% (" к ", 3,49)% (" м ", 3,21)% (" д ", 2,98)% (" п ", 2,81)% (" у ", 2,62)% (" я ",2,01)% ("ы", 1,9)% ("ь", 1,74)% ("г", 1,7)% ("з", 1,65)% ("б", 1,59)% ("ч", 1,44)% ("й", 1,21)% ("х", 0,97)% ("ж", 0,94)% ("ш", 0,73)% ("ю", 0,64)% ("ц", 0,48)% ("щ", 0,36)% ("э", 0,32)% ("ф", 0,26)% ("ъ", 0,04)%

1 Ответ

0 голосов
/ 19 октября 2019

Это должно работать, рассмотреть

 frequenciesSymbol = (name: String, value: Double)
 frequenciesSymbol.sorted(by: { $0. value > $1. value })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...