/**
* 递归分治算法学习之一维二分搜索
* 被搜索的数组必须是有序的才能使用二分搜索算法
* @author Sking
性能:
时间复杂度为O(log(n))
*/
package 递归分治;
public class BinarySearch {
/**
* 在指定数组中搜索指定元素
* @param a 指定的数组
* @param x 待搜索的元素
* @return 如果搜索到给元素,则返回元素索引,否则返回-1
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static int binarySearch(Comparable[] a, Comparable x) {
int left = 0;
int right = a.length - 1;
while (left <= right) {
int middle = (left + right) / 2;
if (x.compareTo(a[middle]) == 0)
return middle;
if (x.compareTo(a[middle]) > 0)
left = middle + 1;
else
right = middle - 1;
}
return -1;
}
public static void main(String[] args) {
}
}
递归分治算法之二分搜索(Java版本)
最新推荐文章于 2022-10-30 01:08:44 发布