Java查找算法

来源:互联网 发布:淘宝 男装 原单 编辑:程序博客网 时间:2024/05/22 04:37

1:线性查找算法

(这个就是典型的线性查找,从头到尾)

//查找数据
    //我们是根据什么来查找呢?我们是根据值来查找,返回她的所有值
    public int search(long value){
        int i;//i在外面进行一个判断,然后在循环里面赋值
//        比如说我查找这个15,arry.insert(15);,那么她的索引是2
        //怎么样来查呢?同样也是经过一个循环
        for (i = 0; i < elements; i++) {
            if (value == array[i]) {//如果值是等于array[i]
//                如果查找到了,就跳出
                break;
                
            }
        }

2:二分法查找算法

二分法查找前提是你这个数组是有序的

比如说一组数组是

1,3,4,5,7,9,10

二分法查找是从中间开始

一边是往左边查,一边是往右边查

思考:什么时候从左边查,什么时候从右边查呢?5比3大,所以我需要的数肯定在左边,

接着又在1,3,45,之间进行二分法,直到查到为止

//二分法查找数据
    public int binarySearch(long value){
        //首先给中间的值为0
        int middle = 0;
        int low =0;//左边为0,表示最低点
        int pow=elements;//最大为elements
        //在里面进行一个死循环
        while(true){
            middle=(pow+low)/2;
            if(array[middle]==value){//如果中间的值等于我查找的值
                return middle;
            }else if(low >pow){
                return -1;
            }else{
                if(array[middle]>value){
                    //条件让我们往左走
                    pow = middle-1;
                }else{
//                    否则往右边走
                    low =middle+1;//最低点等于中间的值加1,就是往右走
                }
            }
        }
        
    }

测试代码

MyOrderarray myOrderarray  = new MyOrderarray();
        myOrderarray.insert(90);
        myOrderarray.insert(80);
        myOrderarray.insert(30);
        myOrderarray.insert(20);
        myOrderarray.diplay();
        System.out.println(myOrderarray.binarySearch(30));




1 0
原创粉丝点击