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

时间:2018-09-18 04:59:29

标签: 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,
output :c

1 个答案:

答案 0 :(得分:1)

尝试并实现以下算法:

  • 将元素放在数组的中间;
  • 如果该元素的值为x,则该数组包含该元素,您就知道要打印什么;
  • 如果元素较大,请查看数组的前半部分;
  • 否则,请查看数组的后半部分;

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