Java中如何实现对数组的二分查找函数?
发布时间:2023-08-24 13:49:21
在Java中,可以采用递归或迭代的方式实现对数组进行二分查找。
递归实现二分查找:
步骤如下:
1. 首先判断数组是否为空,如果为空,则返回-1表示查找失败;
2. 然后判断数组的起始位置start是否小于等于结束位置end,如果大于,则返回-1表示查找失败;
3. 计算中间位置mid,可以使用(start+end)/2来计算;
4. 判断中间位置的值与目标值的关系:
- 如果中间位置的值等于目标值,则返回mid;
- 如果中间位置的值大于目标值,则在数组的左半部分继续进行二分查找,传入的参数为start和mid-1;
- 如果中间位置的值小于目标值,则在数组的右半部分继续进行二分查找,传入的参数为mid+1和end;
5. 如果在递归过程中找到了目标值,则返回目标值在数组中的位置,否则返回-1表示查找失败。
迭代实现二分查找:
步骤如下:
1. 首先判断数组是否为空,如果为空,则返回-1表示查找失败;
2. 定义起始位置start为0,结束位置end为数组的长度减1;
3. 使用循环进行二分查找,循环条件为start小于等于end:
- 计算中间位置mid,可以使用(start+end)/2来计算;
- 判断中间位置的值与目标值的关系:
- 如果中间位置的值等于目标值,则返回mid;
- 如果中间位置的值大于目标值,则把结束位置end更新为mid-1;
- 如果中间位置的值小于目标值,则把起始位置start更新为mid+1;
4. 如果在循环过程中找到了目标值,则返回目标值在数组中的位置,否则返回-1表示查找失败。
无论使用递归还是迭代的方式实现二分查找,都需要保证数组是有序的。
