在给定的数组中找到给定的元素

时间:2014-02-04 09:05:17

标签: c arrays algorithm

我有一个整数数组,其中连续元素的差异只有一个

|arr[i]-arr[j]|=1, where |i-j|=1

不使用线性搜索。

假设我们的数组是

 arr[]=5,4,3,2,1,0,-1,-2,-1,0,1,2,1;

我们必须找出给定值的第一次出现的索引,例如-1 所以,我们的输出是6

我们解决这个问题的方法是什么?

我试过通过获取给定数字和当前元素之间的差异并继续前进。

但我认为我错了,因为它也称为线性搜索。请帮帮我。

2 个答案:

答案 0 :(得分:0)

cand <- 0
repeat:
    if arr[cand] == x:
       done
    else:
       cand <- cand + |arr[cand]-x|

这个想法是 - 你可以'跳过'candcand + |arr[cand]-x|之间的每个元素 - 元素不能存在!

答案 1 :(得分:0)

我认为你的方法没问题,因为线性搜索意味着你遍历每个元素一次,直到你找到答案,但你不这样做。