查找一个数组中是否有复合目标的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; }