有一个int型数组,每两个相邻的数之间的差值不是1就是-1.现在给定一个数,要求查找这个数在数组中的位置。
#include <iostream>
using namespace std;
#include <cstdio>
#include <cstdlib>
int s[100];
int main(){
int n,key;
while(scanf("%d",&n) != EOF){
for(int i = 0;i < n;i++){
scanf("%d",&s[i]);
}
scanf("%d",&key);
int curr = 0;
bool tag = false;
if(s[curr] == key){
printf("%d\n",curr);
continue;
}
int gap = abs(key - s[0]);
while(curr < n){
if(s[curr+gap] == key){
printf("%d\n",curr+gap);
tag = true;
break;
}else{
curr = curr + gap;
gap = abs(key - s[curr]);
/* 由于相邻间隔只有1或者-1,那么在(curr,curr+gap)中不会出现key */
}
}
if(tag == false){
printf("未找到");
}
}
system("pause");
}