| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 591 人关注过本帖
标题:求指点:用C++取值的算法!
取消只看楼主 加入收藏
ysh198877
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-9-25
结帖率:0
收藏
已结贴  问题点数:10 回复次数:2 
求指点:用C++取值的算法!
问题:
     假如我有一组数,例{1,2,3,4,5,6……},我想输入一个数,假如是2.3,然后输出是是数组里与它最靠近的那个数即“2”。

想法:用输入数2.3与每一个数做减法得到最小差值的绝对值,然后在检测那一个数与最小绝对差值的和或差等于输入值,最后输出这个值!这个想法太复杂了有没有更优化的算法,求指点!
搜索更多相关主题的帖子: 绝对值 检测 
2013-09-26 16:40
ysh198877
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-9-25
收藏
得分:0 
回复 2楼 西安郑鑫
太抽象了说……
2013-09-26 17:38
ysh198877
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-9-25
收藏
得分:0 
回复 6楼 西安郑鑫
你说的我想过,问题是如何在最后到2和3之间的时候停止查值,输出来在做比较?
程序代码:
#include <iostream> 
double binsch( double k);
using  namespace std;
int main()
{
    cout<<"enter you number:"<<endl;
    double value_p;
    cin>>value_p;
    binsch(value_p);
    cout<<binsch(value_p)<<endl;

}
#define SIZE 10
int g_x[SIZE] = {1 ,2 ,3 ,4 ,5, 6 ,7 ,8, 9, 10};
double binsch( double k)
{
    int low=0,high=SIZE-1;
    while (low<=high)
    {
        int mid=(low+high)/2;      
        if (k==g_x[mid]  )        
            return g_x[mid];     
        else if(k<g_x[mid] )    
            high=mid-1;
        else low=mid+1;
    }
    return -1;                   //  返回-1
}
2013-09-26 19:15
快速回复:求指点:用C++取值的算法!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016301 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved