File tree 1 file changed +9
-9
lines changed
1 file changed +9
-9
lines changed Original file line number Diff line number Diff line change @@ -14,17 +14,17 @@ import Foundation
14
14
// The recursive version of binary search.
15
15
16
16
public func binarySearch< T: Comparable > ( _ a: [ T ] , key: T , range: Range < Int > ) -> Int ? {
17
- if range. lowerBound >= range. upperBound {
17
+ guard range. lowerBound < range. upperBound else {
18
18
return nil
19
+ }
20
+
21
+ let midIndex = range. lowerBound + ( range. upperBound - range. lowerBound) / 2
22
+ if a [ midIndex] > key {
23
+ return binarySearch ( a, key: key, range: range. lowerBound ..< midIndex)
24
+ } else if a [ midIndex] < key {
25
+ return binarySearch ( a, key: key, range: midIndex + 1 ..< range. upperBound)
19
26
} else {
20
- let midIndex = range. lowerBound + ( range. upperBound - range. lowerBound) / 2
21
- if a [ midIndex] > key {
22
- return binarySearch ( a, key: key, range: range. lowerBound ..< midIndex)
23
- } else if a [ midIndex] < key {
24
- return binarySearch ( a, key: key, range: midIndex + 1 ..< range. upperBound)
25
- } else {
26
- return midIndex
27
- }
27
+ return midIndex
28
28
}
29
29
}
30
30
You can’t perform that action at this time.
0 commit comments