如何在一个数组中查到一个与输入数最接近的数

ppzine 2007-06-25 11:38:38
例如:
int a[]={88,29,49,98,66,33,25,67};
int i=85;
怎样找到与i最接近的数
...全文
541 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
todototry 2007-06-25
  • 打赏
  • 举报
回复
差值min的那个数
先排列
即可以,呵呵^_^,okokok
SoftBomb 2007-06-25
  • 打赏
  • 举报
回复
输入为i,数组排序,二分查找,找第一个大于i的数,设a[k],再比较i-a[k-1]和a[k]-i,决定输出a[k-1]还是a[k];
需要判断k-1是否为负
freshui 2007-06-25
  • 打赏
  • 举报
回复
k>tmp
freshui 2007-06-25
  • 打赏
  • 举报
回复
伪码:
k =|a[0]-i|;
最小=0;

for(j=0; j<size0f(a); j++)
{
int tmp = |a[j] -i|;
if k< tmp;
{
k = tmp;
最小=j;
}
}
freeman868 2007-06-25
  • 打赏
  • 举报
回复 1
int a[]={88,29,49,98,66,33,25,67};
int i=85;

int min;
int k = 100000;

for (int j = 0; j < sizeof(a)/sizeof(int); j++)
{
if (abs(a[j]-i) < k)
{
k = abs(a[j]-i);
min = a[j];
}
}
SoftBomb 2007-06-25
  • 打赏
  • 举报
回复
唉。我老糊涂了
星羽 2007-06-25
  • 打赏
  • 举报
回复
#include "stdlib.h"
#include "stdio.h"
#include "math.h"
#include "iostream"

using namespace std;

int Near(int n, const int a[], int size)
{
int t = abs(a[0] - n);
int index = 0;
for (int i = 1; i < size; i++)
{
if (abs(a[i] - n) < t)
index = i;

}

return index;
}

int main()
{
int a[]={88,29,49,98,66,33,25,67};
int i=85;

cout<<"near number is : "<<a[Near(i, a, sizeof(a)/ sizeof(int))]<<endl;




return 0;
}

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧