测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布最新发布 | 2017年10月 |
SwiftSwift版本 | 3.0 |
SPM支持SPM | ✗ |
由 Oleksii Horishnii 维护。
let ranges = DividableRange<Int>.rangesFor(baseValue: 0, changes: [
DividableRange<Int>.Divider(idx: 24, changeRightFn: { $0 + 9000 }),
DividableRange<Int>.Divider(idx: 4, changeRightFn: { $0 + 1 }),
DividableRange<Int>.Divider(idx: 7, changeRightFn: { $0 + 1 }),
DividableRange<Int>.Divider(idx: 10, changeRightFn: { $0 - 1 }),
DividableRange<Int>.Divider(idx: 20, changeRightFn: { $0 + 100 }),
DividableRange<Int>.Divider(idx: 13, changeRightFn: { $0 + 1 }),
DividableRange<Int>.Divider(idx: 20, changeRightFn: { $0 + 10 }),
])
var someIndexes = Array(0..<25)
let itemsAtIndexes = someIndexes.map { (idx) -> Int in
return DividableRange<Int>.binarySearch(idx: idx, ranges: ranges)
}
print(itemsAtIndexes) // [0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 112, 112, 112, 112, 9112]
创建是 O(N*log(N))
查找是 O(log(N))
DividableRange可以通过CocoaPods获取。要安装它,只需在Podfile中添加以下行
。
pod 'DividableRange'
Oleksii Horishnii, [email protected]
DividableRange在MIT许可证下提供。有关更多信息,请参阅LICENSE文件。