如何实现二分查找算法?

更新于
2026-10-05 17:26:44
1阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1338个文字,预计阅读时间需要6分钟。

一:二分查找算法+文本章节列出刷题中常用的二分查找场景:寻找一个数、寻找左右边界、寻找右边界。

1:二分查找框架

int binarySearch(int[] nums, int key) { int left=0, right=...; while (...) { // ... }}

一:二分查找算法

本文章列出刷题中常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界。

1:1二分查找框架

int binarySearch(int[] nums, int key) { int left = 0, right = ...; while(...) { int mid = (right + left) / 2; if (nums[mid] == key) { ... } else if (nums[mid] < key) { left = ... } else if (nums[mid] > key) { right = ... } } return ...; }

分析二分查找的一个技巧是:不要出现 else,而是把所有情况用 else if 写清楚,这样可以清楚地展现所有细节.

但是元素必须是有序的建议

建议计算mid防止溢出

mid=(l+r+1)/2;

1.2寻找一个数

搜索一个数,如果存在,返回其索引,否则返回 -1。

阅读全文

本文共计1338个文字,预计阅读时间需要6分钟。

一:二分查找算法+文本章节列出刷题中常用的二分查找场景:寻找一个数、寻找左右边界、寻找右边界。

1:二分查找框架

int binarySearch(int[] nums, int key) { int left=0, right=...; while (...) { // ... }}

一:二分查找算法

本文章列出刷题中常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界。

1:1二分查找框架

int binarySearch(int[] nums, int key) { int left = 0, right = ...; while(...) { int mid = (right + left) / 2; if (nums[mid] == key) { ... } else if (nums[mid] < key) { left = ... } else if (nums[mid] > key) { right = ... } } return ...; }

分析二分查找的一个技巧是:不要出现 else,而是把所有情况用 else if 写清楚,这样可以清楚地展现所有细节.

但是元素必须是有序的建议

建议计算mid防止溢出

mid=(l+r+1)/2;

1.2寻找一个数

搜索一个数,如果存在,返回其索引,否则返回 -1。

阅读全文