我有一个排序的数组,想要对它进行二进制搜索。
所以我想问一下Swift库中是否已有诸如sort等的东西?还是有类型独立版本可用?
当然,我可以自己编写它,但是我想避免再次发明轮子。
最佳答案
这是使用二进制搜索的通用方法:
func binarySearch<T:Comparable>(_ inputArr:Array<T>, _ searchItem: T) -> Int? {
var lowerIndex = 0
var upperIndex = inputArr.count - 1
while (true) {
let currentIndex = (lowerIndex + upperIndex)/2
if(inputArr[currentIndex] == searchItem) {
return currentIndex
} else if (lowerIndex > upperIndex) {
return nil
} else {
if (inputArr[currentIndex] > searchItem) {
upperIndex = currentIndex - 1
} else {
lowerIndex = currentIndex + 1
}
}
}
}
var myArray = [1,2,3,4,5,6,7,9,10]
if let searchIndex = binarySearch(myArray, 5) {
print("Element found on index: \(searchIndex)")
}
关于arrays - swift : Binary search for standard array?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31904396/