二分查找—Swift代码模板

Swift代码模板

func binarySearch(_ nums: [Int], _ target: Int) -> Int {
    var l = 0
    var r = nums.count - 1
        
    while l <= r {
        let mid = (l + r) >> 1
        if nums[mid] == target {
            return mid
        } else if nums[mid] > target {
            r = mid - 1
        } else {
            l = mid + 1
       }
   }
   return -1
}

还有一个模板更高级一些,用于解决某些类型的问题:

func binarySearch(_ nums: [Int], _ target: Int) -> Int {
    var l = 0, r = nums.count        
    while l < r {
          let mid = l + (r - l) / 2
          if nums(mid) >= target {
                r = mid
            } else {
                l = mid + 1
            }
        }
    return r
}

复杂度分析

  • 时间复杂度:O(logn),其中 n 是数组的长度。
  • 空间复杂度:O(1)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容