-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMedianOfNumbers.swift
More file actions
42 lines (36 loc) · 917 Bytes
/
Copy pathMedianOfNumbers.swift
File metadata and controls
42 lines (36 loc) · 917 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//
// MedianOfNumbers.swift
// functional-programming
//
// Created by Oktavia Citra on 15/09/22.
//
import Foundation
// MARK: - Before
func median(of decimals: [Double]) -> Double {
let n: Int = decimals.count
var sorted = decimals
for i in 0..<n - 1 {
var min_index = i
for j in i..<n {
if sorted[i] < sorted[i] {
min_index = j
}
}
let temp = sorted[i]
sorted[i] = sorted[min_index]
sorted[min_index] = temp
}
var result: Double = 0.0
if n % 2 == 0 {
result = (sorted[n/2-1] + sorted[n/2])/2
} else {
result = sorted[n/2]
}
return result
}
// MARK: - After
func median(of decimals: [Double]) -> Double {
let n: Int = decimals.count
let sorted: [Double] = decimals.sorted()
return n % 2 == 0 ? (sorted[n/2-1] + sorted[n/2])/2 : sorted[n/2]
}