欢迎访问宙启技术站
智能推送

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表示查找失败。

无论使用递归还是迭代的方式实现二分查找,都需要保证数组是有序的。