java05-数组

数组:表示相同数据类型,固定长度的一组有序数据。 按维度分为一维数组、二维数组、多维数组。

一:一维数组:

    /*
         1.数组属于引用数据类型的变量,数组的元素即可以是基本类型也可以是引用类型
         2.数组的索引是从0开始
         3.创建数组对象会在内存中开辟一整块连续的空间
         4.数组的长度一旦确定,就不能修改
         */        
        //静态初始化
        int[] arry1 =new int[] {1,2,3,4,5,6};
        //动态初始化
        int[] arry2 = new int[3];
        arry2[0]=1;
        arry2[1]=3;
        arry2[2]=5;
        //数组名称为内存首地址
        System.out.println(arry1);
        //length属性获取数组长度
        System.out.println(arry1.length);
        //根据索引输出数组元素
        System.out.println(arry1[2]);
        //遍历数组
        for(int i=0;i<arry1.length;i++) {
            System.out.println(arry1[i]);
            
        }

  内存分析:

//例题1:从键盘输入考生数量和输入成绩,输出最大成绩并根据成绩判断等级
        //1.输入考试人数:
        Scanner scan =new Scanner(System.in);
        System.out.println("请输入考试学生人数:");
        int number= scan.nextInt();
        //2.输入考试分数,并获取最大值
        int[] arryDemo =new int[number];
        System.out.println("请输入考试成绩:");
        int maxscore=0;
        for (int i=0; i<arryDemo.length;i++) {
               arryDemo[i]=scan.nextInt();
               if(maxscore<=arryDemo[i]) {
                   maxscore=arryDemo[i]; 
               }
        }
        System.out.println("最高分为:"+maxscore);
        //3.定义等级
        char level;
        for(int i=0; i<arryDemo.length;i++) {
            if(maxscore-arryDemo[i]<10) {
                level='A';
                
            }else if(maxscore-arryDemo[i]<20) {
                
                level='B';
            }
            else if(maxscore-arryDemo[i]<30) {
                level='C';
            }else {
                level='D';
            }
            //4.输出等级信息
            System.out.println("学生"+i+"分数为:"+ arryDemo[i]+",等级为:"+ level);

//例题2:随机输入10个整数,求最大值、最小值、求和,且每个数都在10到100之间
        int[] array1=new int[10];
        for (int i=0;i<array1.length;i++) {
            array1[i]=(int)(Math.random()*90 +10);    
        }
        for(int i=0;i<array1.length;i++) {
            System.out.print(array1[i] +"\t");
        }
        System.out.println();
        int maxarry=array1[0];
        for(int i=0;i<array1.length;i++) {
            if(maxarry<array1[i]) {
                maxarry=array1[i];    
            }
            
        }
        System.out.println("最大数为:"+ maxarry);
        
        int minarry=array1[0];
        for(int i=0; i<array1.length;i++) {
            if(minarry>array1[i]) {
                minarry=array1[i];
            }
        }
        System.out.println("最小数为:"+ minarry);
        int sum=0;
        for(int i=0;i<array1.length;i++) {
            sum+=array1[i];
            
        }
        System.out.println("总和为:"+ sum);    
        
        //例题3:数组的反转 方法一:
        String [] strarray= {"AA","BB","CC","DD","EE","FF"};
        for(int i=0;i<strarray.length;i++) {
            System.out.print(strarray[i]+"\t");
            
        }
        System.out.println();
        //不管数组长度为奇数或偶数,只需要比较length/2次
        for(int i=0;i<strarray.length/2;i++) {
        
            String temp= strarray[i];
          strarray[i]=strarray[strarray.length-1-i];
          strarray[strarray.length-1-i]=temp;
          
        }
        for(int i=0;i<strarray.length;i++) {
            System.out.print(strarray[i]+"\t");
            
        }
        System.out.println();
      //例题3:数组的反转 方法二:
        for(int i=0,j=strarray.length-1;i<j;i++,j--) {
            String temp= strarray[i];
            strarray[i]=strarray[j];
            strarray[j]=temp;
        }
        for(int i=0;i<strarray.length;i++) {
            System.out.print(strarray[i]+"\t");
            
        }
        //例题4:数组的复制:
        int[]  arr1 =new int[] {1,3,5,6,7,4,8,10};
        int[]  arr2= new int[arr1.length] ;
        for(int i=0;i<arr1.length;i++) {
            arr2[i]=arr1[i];
        }
        for(int i=0;i<arr2.length;i++) {
            System.out.print(arr2[i]+"\t");
        }
        //例题5:数组的查找:线性查找
        boolean isflag=true;
        String[] strarr1= {"AA","BB","CC","DD","EE","FF"};
        String deal="Fxd";
        for (int i=0;i<strarr1.length;i++) {
            if (strarr1[i].equals(deal)) {
                System.out.println("相同元素为:"+strarr1[i]);
                isflag=false;
                
            }
        }
        if(isflag) {
            
            System.out.println("没有相同元素");
        }
        
      //例题6:数组的排序:二分法查找(数组为有序的)
        int[] arr3=new int[] {-10,5,15,20,30,35,40,56,60,70};
         int dest=41;
         int head=0;
         int end=arr3.length-1;
         boolean isflag2=true;
         while(head<=end) {
             int middle=(head+end)/2;
    
                if(dest==arr3[middle]) {
                     System.out.println("找到了元素位置为:"+middle);
                     isflag2=false;
                     break;
                     }
                 
                     else if(dest<arr3[middle]) {
                         end=middle-1;
                         
                         
                     }else {
                         head=middle+1;
                     }
                    
                     
                 }
             //元素不在数组里
             if(isflag2) {
                 System.out.println("很遗憾没找到!");
             }
             
             
             //例题7:冒泡排序
             //思路:冒泡的排序为相邻两个数比较,满足条件就交换位置,外层循环控制比较轮次,内层循环控制一轮比较次数
             
             int[] arr4 =new int[] {10,-20,3,1,34,56,12,9,30};
            for(int i=0;i<arr4.length-1;i++) {
                for(int j=0;j<arr4.length-1-i;j++) {
                    if(arr4[j]>arr4[j+1]) {
                        int temp=arr4[j];
                         arr4[j]=arr4[j+1];
                         arr4[j+1]=temp;
                    }
                }
            }
            for(int i=0;i<arr4.length;i++) {
                System.out.print(arr4[i]+"\t");
            }
            
            //8.Arrays类 常用方法:
            //1.equals(a, a2) 比较两个数组的大小
            //2.toString([]a) 输出数组内容
            //3.sort([]a) 数组排序
            
            int[] a1 =new int[] {1,2,3,4};
            int[] a2 =new int[] {1,3,2,4};
            System.out.println(Arrays.equals(a1, a2));
            System.out.println(Arrays.toString(a1));
            Arrays.sort(a2);
            System.out.println(Arrays.toString(a2));
            


        }
       二:二维数组: 

二维数组:一维数组的元素仍为一维数组

    //静态初始化方法1:
        int[][] array =new int [][] {{1,2,3},{4,5},{6,7,8}};
        //静态初始化方法2:
        int[][] array2 ={{1,2,5},{4,7},{6,7,8}};
        //动态初始化1:
        int[][] arr1 =new int [4][3];
        //动态初始化2:
        int [][] arr2=new int [4][];
        
        // 二维数组遍历
        int[][] ids = new int[][] {{1,2,3},{4,5},{6,7,8}};
        for(int i=0;i<ids.length;i++) {
            for(int j=0;j<ids[i].length;j++) {
                System.out.print(ids[i][j] +" ");
                
            }
            System.out.println();
        }

  内存分析:

         

//打印杨辉三角

        int [][] arry1 = new int[10][];
        for(int i=0;i<arry1.length;i++) {
            arry1[i]=new int[i+1];
            arry1[i][0]=1;
            arry1[i][i]=1;
            for(int j=1;j<arry1[i].length-1;j++) {
            arry1[i][j]=arry1[i-1][j-1]+arry1[i-1][j];
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值