A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 燃灯街 中级黑马   /  2013-6-12 23:06  /  1177 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 燃灯街 于 2013-6-13 16:33 编辑

给定一个已经排好序的double类型的数组,以及另一个double类型的数值,写一个算法找到该数组中与此数值最接近的元素。(前提是:不要用二分查找)

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

3 个回复

倒序浏览
我研究了一下,二分查找算法的优化往往是增大查找步骤的跨度,从而降低算法的时间复杂度,这样很可能直接跳过了最接近查找值元素的位置,比如插值查找算法,斐波那契查找算法都是如此;至于构造数组(有序表)以外的数据结构进行查找操作,反而得不偿失了。而最简单的顺序查找算法倒是满足楼主要求。个人见解,供参考。
回复 使用道具 举报
public class Test{
public static void main(String[] a){
double[] arr = {1,2,3,4.5,5,6,8};
double find = 4.3,result = 0;
double flag = Math.abs(arr[0]-find);
for(int i =0;i<arr.length;i++){
double d = Math.abs(arr[i]-find);
if(d<=flag){
flag = d;
result = arr[i];
}

}
System.out.println("最接近"+find+"的数组中数值是"+result);
}
}
回复 使用道具 举报
问题已经解决的,请及时更改分类为已解决,方便大家查阅,没有的继续追问
关于提问技巧请看:http://bbs.itheima.com/thread-53229-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马