• Java基础-数组


    概念 数组就是同一种类型那个数据的集合,是一个容器,是引用类型,存储在堆中。
    好处:可以自动给数组中的元素从0开始编号,方便操作这些元素
    格式: 1. int[] arr=new int[5]; 创建一个长度为5 的,变量名为arr,类型为整型的数组。
          2. int[] arr=new []{5,6,8,3,4}
             int[] arr={5,6,8,3,4}
    
    数组中常见问题:
    1、数组角标越界 //ArrayIndexOutofBoundsException
    2、空指针异常  //NUllPointerException 当引用没有任何指向,值为空的情况,该引用还在用于操作实体。
    
    数组的操作:
    1.获取数组中的数据,通常会用到遍历(for循环),arr.length代表数组的长度
    代码:
      int[] arr=new int[5];
      for(int x=0;x<arr.length;x++)
      {
            arr[x];
      }
    
    2.打印数组中的元素,元素间用逗号隔开。
    
       int[] arr=new int[5];
      for(int x=0;x<arr.length;x++)
      {
             if(x!=arr.length-1)
              System.out.print( arr[x]+",");
             else
               System.out.print( arr[x]);
    
      }
    
    3.获取最值
          //定义一个方法,返回最大值角标
               public static int  getmax(int[] arr){
    
                          int max=0; //定义一个变量初始化数组的0角标值
    		for(int x=0; x<arr.length;x++){//循环遍历数组
    			if(arr[max]<arr[x]){//如果临时元素小于遍历到的元素
    				max=x;//将遍历到的值的角标付给临时变量角标
    			}
    		}
    	return max;	//返回最大值角标	
    	}
    4.数组排序-选择排序:内循环结束一次,最值出现在头角标位置上,第一个依次和后面的几个相比较
          
          public static void  xuanze(int[] arr){
    		
    		
    		for(int x=0; x<arr.length-1;x++){//控制比较的圈数
    			 
    			for(int y=x+1;y<arr.length;y++)//控制每圈比较的次数
    			{
    				if(arr[x]>arr[y]){
    					int temp=arr[y];
    					arr[y]=arr[x];
    					arr[x]=temp;
    					
    				}
    				
    			}
    		}
    
    
    5.数组排序-冒泡排序:相邻的两个元素进行比较,第一圈,最值出现在最后。
           
             public static void  maopao(int[] arr){
    		
    		
    		for(int x=0; x<arr.length-1;x++){//控制比较的圈数
    			 
    			for(int y=0;y<arr.length-x-1;y++)//控制每圈比较的次数  -1是避免角标越界,-x是让每一次比较的元素减少
    			{
    				if(arr[y]>arr[y+1]){
    					int temp=arr[y+1];
    					arr[y+1]=arr[y];
    					arr[y]=temp;					
    				}
    			}
    		}
    6.数组置换
          
         public static void  maopao(int[] arr,int x, int y){
    
    
                                 int temp=arr[x];
    					arr[x]=arr[y];
    					arr[y]=temp;
    
         }
    
    7.数组的一般查找:获取key第一次出现在数组中的位置,如果返回-1,则不存在
        public static int  select(int[] arr,int key){
    				
    		for(int x=0; x<arr.length;x++){
    			if(arr[x]==key){
    				
    				return x;
    			}
    		}
    			return -1;
    	}
    
    8.数组的折半查找:可以提高查找效率,但是必须是有序数组
    第一种方式:
      先找到头角标 和尾角标  
      min =0 //头角标
      max=arr.length-1;//尾角标
      mid =(min+max)/2;//中间角标
      在要找得的值和中间角标不相等的情况下,循环查找。
      如果要找的值比中间角标值大的话,头角标就是中间角标+1;
      如果要找的值比中间角标小的话,尾角标就是中间角标-1;
      中间角标重新赋值 mid =(min+max)/2;//中间角标
       查找之后,如果头角标大于了尾角标的话 ,数组中就没有这个值,
    
    
    第二种方式:
       如果头角标和尾角标之间有距离,也就是说头角标和尾角标小于等于尾角标的时候,就进行折半。否则不存在 返回 -1
      
       mid =(min+max)/2;//中间角标
    
       之后呢  如果要找的值比中间角标值大的话,头角标就是中间角标+1;
      如果要找的值比中间角标小的话,尾角标就是中间角标-1;
    如果相等的话 就返回中间角标值。找到了
    
    
    
    面试题:在有序的数组中,插入一个值,插入之后还保证数组是有序的。获取该元素在数组中的位置。
     返回的就是最小角标的值就是min的位置  。
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    设置元素等待.py
    javaWeb服务详解(含源代码,测试通过,注释)
    com.sun.istack.SAXException2: 在对象图中检测到循环。这将产生无限深的 XML
    com.sun.istack.SAXException2: 在对象图中检测到循环。这将产生无限深的 XML
    No services have been found解决方案
    No services have been found解决方案
    JavaMail给QQ邮箱发邮件报错,没有SSL加密
    JavaMail给QQ邮箱发邮件报错,没有SSL加密
    JavaMail给QQ邮箱发邮件报错
    JavaMail给QQ邮箱发邮件报错
  • 原文地址:https://www.cnblogs.com/chun2015/p/4940991.html
Copyright © 2020-2023  润新知