本篇介绍一个比较简单的搜索算法, binary search,二分法检索, 下面是代码
func binarySearch(array: [Int], numberToSearch: Int) -> Bool {
let minIndex = 0
let maxIndex = array.count - 1
let midIndex = maxIndex / 2
let midValue = array[maxIndex]
if numberToSearch < array[minIndex] || numberToSearch > array[maxIndex] {
return false
}
if array.count == 0 { return false }
if numberToSearch > midValue {
let slice = Array(array[midIndex + 1...maxIndex])
return binarySearch(array: slice, numberToSearch: numberToSearch)
}
if numberToSearch < midValue {
let slice = Array(array[minIndex...midIndex - 1])
return binarySearch(array: slice, numberToSearch: numberToSearch)
}
if midValue == numberToSearch {
return true
}
return false
}
这个算法的是在一个排序的array中,是否有我们想要的那个数,它的逻辑在于首先我们从中间开始找,如果中间那个数不是我们想要的那个数,便判断是否大于或者小于这个数,如果是大于,便去掉小于的那一半,然后在进入算法,自此类推,直到找到我们想要的那个数,否则return false。这算是一个很快的算法,如果运气好,直接中间那个数就是我们要的数的话,它的time complexity就是 O(1), 如果运气差,直到分到最后才找到想要的数,它的time complexity就是 O(log n)
二分查找算法解析
本文深入探讨了二分查找算法的实现与应用。通过简洁的Swift代码示例,讲解了如何在一个有序数组中高效地搜索目标值。算法采用递归方式,每次将搜索范围减半,直至找到目标值或确定其不存在,实现O(logn)的时间复杂度。
166

被折叠的 条评论
为什么被折叠?



