JAVA学习第二周——数组

来源:互联网 发布:互联网共享打印机端口 编辑:程序博客网 时间:2024/06/06 04:04

1.二分查找法 面试题:

给定一个有序的数组,如果往该数组中存储一个元素,并保证这个数组还是有序的,那么这个元素的存储的角标如何获取

public static void main(String[] args) {    // TODO Auto-generated method stub    int [] arr = {13,15,19,28,33,45,78,106};    int index = halfSearch_1(arr,50);    System.out.println("index="+index);}public static int halfSearch_1(int [] arr,int key){    int max,min,mid;    min = 0;    max = arr.length-1;    while(min<=max)    {        mid = (max+min)>>1;        if(key>arr[mid])            min = mid+1;        else if(key<arr[mid])            max=mid-1;        else             return mid;    }    return min;}

2.给定一个有序数组,查找某一元素的角标
import java.util.*;//开头写上

int index1 = Arrays.binarySearch(arr,45);//折半查找,如果元素不存在,返回 -插入点-1,如果存在返回具体的角标位置;System.out.println("index="+index1);

3.获取一个整数的16进制表现形式

public static void toHex(int num){//  int n1 = num & 15;//  System.out.println("n1="+n1);//  //  num = num>>>4;//  int n2 = num&15;//  System.out.println("n2="+n2);    for(int x = 0;x<8;x++)    {        int temp = num&15;        if(temp>9)            System.out.print((char)(temp-10+'A'));        else             System.out.print(temp);;        num = num>>>4;    }}

4.什么时候使用数组?

如果数据出现了对应关系,而且对应关系的一方是有序的数字编号。并作为角标使用,这时就必须要想到数组的使用查表法:根据运算的结果作为角标直接去查数组中对应的元素即可。public static void main(String[] args){    System.out.println(Integer.toBinaryString(-6));    //相当于toBinary(-6);}//十进制-->十六进制public static void toHex(int num){    trans(num,15,4);}//十进制-->二进制public static void toBinary(int num){    trans(num,1,1);}//十进制-->八进制public static void toOctal(int num){    trans(num,7,3);}public static void trans(int num,int base,int offset){    if(num==0)    {        System.out.println("0");        return;    }    //定义一个对印关系表    char [] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};    /*一会查表会查到比较的数据。数据一多就先存储起来,在进行操作。所以定义一个数组,临时容器。     */    char [] arr = new char[8];    int pos = arr.length;    while(num!=0)    {        int temp = num & base;        arr[--pos] = chs[temp];        num = num>>>offset;    }    System.out.println("pos="+pos);    for(int x=pos;x<arr.length;x++)    {        System.out.print(arr[x]);    }}

5.

1 0
原创粉丝点击