DividableRange 0.1.1

DividableRange 0.1.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新发布2017年10月
SwiftSwift版本3.0
SPM支持SPM

Oleksii Horishnii 维护。



  • Oleksii Horishnii

DividableRange



示例

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文件。