如何实现二分查找算法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计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。
本文共计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。

