查找一个数组中是否有复合目标的key值。
通常做法是遍历一遍数字,找到相等的值的下标。
public class MySearch {
private int[] array;
public SequentialSearch(int[] array){
this.array=array
}
public int search(int key){
for (int i=0;i<array.length;i++){
if(array[i]==key){
return i;
}
}
return -1;
}
}
当然,可以改进的地方是 设定一个临时变量,找到目标索引下标后break。
还有另外一种思路。通过讲目标值插到索引0的位置,倒序进行比较。这种方式能避免数组越界的比较。
public int search2(int key){
//先判断是否是下标为0的元素
if(key==array[0]){
return 0;
}
int temp=array[0];//赋值给下标为0的元素
array[0]=key;
int i=array.length-1;
//倒序比较
while(array[i]!=key){
i--;
}
array[0]=temp;
if(i==0){
return -1;
}
return i;
}