算法学习-顺序查找

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

  

posted @ 2021-02-06 15:11  SpeedHorse  阅读(64)  评论(0编辑  收藏  举报