数组的查找

来源:互联网 发布:游戏编程 知乎 编辑:程序博客网 时间:2024/06/14 03:53

二分查找法:查找的数组只能是有序的,不能手动排序

public static int halfSearch(int[] arr,key){    int max=0,min=0,mid=0;    while(min<max){        mid=(min+mid)/2;        if(key>arr[mid]){        min=mid+1;        }else if(key<arr[mid]){        max=mid-1;        }else{        return mid;        }    }    return -1;}

如果是数组是无序,只能用for循环遍历数组;
当然java中提供了封装的方法可以直接使用:Arrays.binarySearch( )
此方法如果查找的值不存在返回(-min-1);

2.什么时候使用数组?
如果数据出现对应关系,且对应的一方是有序的数字编号,并作为角标使用,使用数组。

将这些数据存储到数组中,根据运算的结果作为角标
,直接去查数组的元素,即为查表法。

//十进制转换为任意进制public static void toHex(int num,int base,int offset){    if(num==0){        System.out.println("0");        return;    }    char ch={'0','1','2','3','4',            '5','6','7','8','9','            A','B','C'.'D','E','F'};//建表        char[] arr=new int[32];//建一个新的数组,保存16进制        int pos=arr.length;   //定义脚标;    while(num!=0){        int temp=num & base;//转换进制        arr[--pos]=ch[temp];            num=num>>>offset;    //offset偏移量        }        System.out.println("pos="+pos);        for(int x=pos;x<arr.length;x++){        System.out.println(arr[x]);

当然java中也提供了封装的方法可以直接使用:Integer.toBinaryString( );

原创粉丝点击