给定一个排序整数数组,并在c中找到与给定数字最接近的值。数组可能包含重复的值

给定一个排序整数数组,并在c中找到与给定数字最接近的值。数组可能包含重复的值,c,arrays,C,Arrays,例如,我们在一个数组中有5个值(a,b,c,e,d),这些值可能包含重复的值。a,b,c,d,e的值由另一个函数计算,并被分配一些值。 让用户输入值为x。 我们需要在数组中找到与x最近的值,并且输出必须在a、b、c、e、d中。如果最接近的数字是其中一个副本,则必须考虑字母顺序 例如: Array: a,b,c,e,d a=6、b=5、c=3、d=9、e=9是函数分配给它们的值 for x : 5, output : b for x :11, output : d for x : 4, ou

例如,我们在一个数组中有
5
个值(
a,b,c,e,d
),这些值可能包含重复的值。
a,b,c,d,e
的值由另一个函数计算,并被分配一些值。 让用户输入值为
x
。 我们需要在数组中找到与
x
最近的值,并且输出必须在
a、b、c、e、d
中。如果最接近的数字是其中一个副本,则必须考虑字母顺序

例如:

Array: a,b,c,e,d
a=6、b=5、c=3、d=9、e=9
是函数分配给它们的值

for x : 5,
output : b

for x :11,
output : d

for x : 4,
output :c

尝试并实现以下算法:

  • 获取数组中间的元素
  • 如果此元素的值为
    x
    ,则数组包含它,您知道要打印什么
  • 如果元素较大,则查看数组的前半部分
  • 否则,查看数组的后半部分

一旦搜索的数组部分的大小为
0
,您就找到了插入
x
以保持顺序的位置。最接近的值是左侧的值或右侧的值(如果有)。计算差异以确定要打印的内容。

写出来!花些时间在纸上写一个算法(例如,要“手工”解决这个问题,需要做哪些可重复的步骤),然后将其转换为代码。它成功了。。谢谢你,干得好!:)