0

I created an alias - typealias frequenciesSymbol = (String, Double). I created an array using an alias as the data type frequenciesSymbol. Then I filled this array with elements, and now I need to sort this array by Double elements. How should I do it?

typealias frequenciesSymbol = (String, Double)

// WE THINK THE FREQUENCY OF MEETING EACH SYMBOL

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

// TRANSFER FREQUENCY IN %

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

// CREATE AN ARRAY IN WHICH WE FORM THE FREQUENCY IN ACCORDANCE WITH THE SYMBOLS WITH THE SYMBOLS

var frequenciesOutputText = [frequenciesSymbol]()

// WRITE THE ARRAY OF VALUES OF FREQUENCY ACCORDING TO THE SYMBOL

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

//SORT ARRAY BY FREQUENCY VALUES

I want to get something like this

("о", 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)%

Martin R
  • 529,903
  • 94
  • 1,240
  • 1,382

1 Answers1

0

This should work consider

 frequenciesSymbol = (name: String, value: Double)
 frequenciesSymbol.sorted(by: { $0. value > $1. value })
Reed
  • 944
  • 7
  • 15