0
点赞
收藏
分享

微信扫一扫

数组地址解析及二分算法查找

萧让听雪 2022-04-02 阅读 18
java

目录

数组的地址解析

数组元素的查找(线性查找-逐个寻找)

数组中二分法算法(只能对于有序的数组)      

数组排序算法之冒泡排序

数组中常见异常


数组的地址解析

  int[][] b=new int[][] {{1,2,3},{2,3,4},{5,6,9}};
         System.out.print(b[0]);    //[I@5ae9a829    [ 表示存有一维数组  I表示储存的是int类型的  @后面的16进制的数表示地址值。。
         System.out.print(b);        //[[I@6d8a00e3    [[表示存有一维数组  I表示储存的是int类型的  @后面的16进制的数表示地址值。

数组元素的查找(线性查找-逐个寻找)

String[] arr1=new String[] {"aa","ss","dd","ff","gg"};
		String a="ss";
		boolean isflag=true;
		for(int i=0;i<arr1.length;i++) {
			if(arr1[i].equals(a)) {
				isflag=false;
				System.out.println("找到了,在第"+i+"个位置");
				break;
			}
		}
		if(isflag) {
			System.out.println("没找到");
		}

数组中二分法算法(只能对于有序的数组)
      

 int[] arr1=new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13,78};
        int chazhao=78;    //需查找的数
        int start=0;        //初始索引值
        int end=arr1.length-1;        //末尾索引值
        boolean isflag=true;        //标识符,用来判断是否找到所要找的值
        while(start<=end) {            //当每一次的初始索引值小于等于末尾索引值时才能继续查找。
        int middle=(start+end)/2;        //二分查找从中间位置查找,相类似的有3分查找等等
        if(chazhao==arr1[middle]) {        //找到了
            System.out.println("找到了,位置为"+middle);
            isflag=false;
            break;
        }
        else if(chazhao>arr1[middle]) {        //要找的数大于中间的数,故改变初始索引值为中间值+1
            start=middle+1;
        }
        else {                                //要找的数小于中间的数,故改变末尾索引值为中间值-1
            end=middle-1;
        }
        }                                //重复while循环,知道找到了,或初始索引值>末尾索引值
        if(isflag) {
            System.out.println("没找到");
        }

数组排序算法之冒泡排序

数组中排序算法之冒泡排序:				依次比较相邻的元素,最后的元素将是最大的数,每轮过后,需比较的元素越来越少
		int[] arr1=new int[] {4,5,1,2,99,6,55,41,23,56,897,45,123};
		for(int i=0;i<arr1.length;i++) {				//i表示要排序的轮数。
			for(int j=0;j<arr1.length-1-i;j++) {  		//-1保证能比较到arr1数组的最后一个元素。  -i表示过了i轮后找到了i个最大值,且不需要再比较。
				if(arr1[j]>arr1[j+1]) {
					int temp;
					temp=arr1[j];
					arr1[j]=arr1[j+1];
					arr1[j+1]=temp;
				}
			}
		}
		for(int q:arr1) {
			System.out.print(q+"\t");
		}

数组中常见异常

1> 数组角标越界的异常: ArrayIndexOutofBoundsException
		
			int[] a=new int[] {1,2,5,6,8,9,7,45,60};
			for(int i=0;i<=a.length;i++) {
			System.out.println(a[i]);
			}
		
		
		
2> 空指针异常: NullPointerException
		
			//情况一
			int[] a=new int[5];
			a=null;
			System.out.println(a[1]);
			
			//情况二
			int[][] a=new int[5][];
			System.out.println(a[1][0]);
			
			//情况三
			String[][] a=new String[][] {{"aa"},{"bb"}};
			a[0]=null;
			System.out.println(a[1].toString());// [Ljava.lang.String;@5ae9a829
			System.out.println(a[0].toString());// java.lang.NullPointerException:
			
举报

相关推荐

0 条评论