java折半查找简述_算法 - 折半查找(Java)

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net

package chimomo.learning.java.algorithm.search;

/**

* @author Chimomo

*

* The prerequisite of binary search:

*

* 1. The searched sequence must be sequential stored.

*

*

* 2. The searched sequence must be sorted by keyword.

*

*/

public class BinarySearch {

/**

* Recursively binary search x in sorted array a with low subscript lower

* bound and high subscript upper bound.

*

* Time complexity is O(log2n).

*

* @param a The array to be searched

* @param x The searched target

* @param low The subscript lower bound of array a

* @param high The subscript upper bound of array a

* @return The subscript of x in the array a if found, -1 otherwise.

*/

public static int searchRecursively(int[] a, int x, int low, int high) {

// Not found.

if (low > high) {

return -1;

}

int mid = (low + high) >> 1;

if (x == a[mid]) {

return mid;

}

return x < a[mid] ? searchRecursively(a, x, low, mid - 1) : searchRecursively(a, x, mid + 1, high);

}

/**

* Circularly binary search x in sorted array a.

*

* Time complexity is O(log2n).

*

* @param a The array to be searched

* @param x The searched target

* @return The subscript of x in the array a if found, -1 otherwise.

*/

public static int searchCircularly(int[] a, int x) {

int low = 0;

int high = a.length - 1;

while (low <= high) {

int mid = (low + high) >> 1;

if (a[mid] == x) {

return mid;

}

if (a[mid] < x) {

low = mid + 1;

} else {

high = mid - 1;

}

}

return -1;

}

}

标签:折半,Java,int,mid,high,查找,low,return,array

来源: https://blog.csdn.net/chimomo/article/details/80404639

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值