作者: wangding263 链接: http://wangding263.javaeye.com/blog/255544 发表时间: 2008年10月20日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
通过折半查找的方法 进行查找元素的时候:必须要保证要查找的元素集合collection是有序的。然后想象改需要查找的集合是有头又尾的,头为top,尾bottom.先把要查找的目标元素target,同集合的中间元素mid进行比较,如果target>collection[mid]则表示,目标元素在集合的右半部分,否则在左半部分。然后重复这个过程.
代码如下:
public class BiFind {
// 假如data[]数组是从小到大的
public static boolean find(int[] data, int target) {
int top = 0;
int bottom = data.length - 1;
while (top <= bottom) {
int mid = (top + bottom) / 2;
if (target < data[mid]) {
bottom = mid - 1;
} else if (target>data[mid]) {
top = mid + 1;
} else {
return true;
}
}
return false;
}
public static void main(String[] args) {
int[] data = new int[] { 1, 2, 3, 4, 5,5,5,5,6, 6, 6,11111 };
System.out.println(find(data, 5));
}
}
已有 0 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐