黑马程序员__数组

黑马程序员——数组

------- android培训java培训、期待与您交流! ----------

1.数组的基本知识

定义:数组是同一种类型数据的集合,也就是一个存储数据的容器。

格式:type[ ]  arrayName;type arrayName[ ];

初始化:数组的初始化就是为数组的元素分配内存空间,并为每个数组元素赋初识值。

          静态初始化:在初始化时就指定每个数组元素的初始值。例如:

                                arrayName=new type[ ]{e1,e2,e3...};

          动态初始化:在初始化时只指定数组长度。例如:

                                arrayName=new type[length];

注意:数组是一种引用数据类型,只有对数组进行初始化后才可以使用。

            数组中的元素从0开始编号。

数组在内存中的存储形式:

               
	定义并初始化一个数组后,在内存中分配了两个空间。一个用于存放数组在内存中的地址值,另一个用来存放中的元素。
	Java程序在运行时,需要在内存中分配空间。为了提高效率,对空间进行了不同区域的划分,因此每一片区域都有特定的处理数据的方式和内存管理方法。其中:
               栈内存用于存储局部变量,当数据使用完,其所占空间会自动释放。
     	       堆内存用于存储数组和对象等实体,通过new关键字建立的实体都将存放在堆内存中,每一个实体都有内存地址值。

2. 数组的基本操作

(1)数组的遍历

               获取数组中的元素,通常会用到遍历。一般使用for循环。代码如下:
               
			<span style="font-size:18px;">for(int i=0;i<array.length;i++){
                              //遍历输出数组的元素
                              System.out.println(array[i]);
</span>

(2)数组的排序

            I.选择排序:将指定角标上的元素一次与其他元素进行比较。
                        
<span style="font-size:18px;"> 		public static void selectSort(int[] arr){
                         //外层循环控制比较的次数
                         for(int i=0;i<arr.length-1;i++){
                         //内存循环用来获取每一个元素
                               for(int j=i+1;j<arr.length;j++){
                                              if(arr[i]>arr[j]){
                                                        int temp=arr[i];
                                                        arr[i]=arr[j];
                                                        arr[j]=temp;
                                              }
                               }
                         }
                         for(int i=0;i<arr.length;i++){
                               System.out.println(arr[i]);
                         }
               }
</span>

               注意:选择排序内循环结束以此,最值出现在头角标位置上。
	II.冒泡排序:相邻的两个元素进行比较,如果符合条件就交换位置。
               
<span style="font-size:18px;">	public static void maopaoSort(int[] arr){
		//外层循环控制比较的次数
		for(int i=0;i<arr.length-1;i++){
		//内存循环用来获取元素进行比较元素,-i让每一次比较的元素减少,-1避免数组角标越界
			for(int j=0;j<arr.length-1-i;j++){
				if(arr[j]>arr[j+1]){
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}	
			}
		}
		for(int i=0;i<arr.length;i++){
			System.out.println(arr[i]);
		}
	}</span>

	注意:内层循环参与比较的元素在逐级减少。
	IIIJava中已经定义好的一种排序方式,开发中对数组排序使用该方式:
               Arrays.sort(type[] arr);

(3)数组的查找

              获取指定元素第一次出现在数组中的位置。

       I.普通查找

            

<span style="font-size:18px;"> 	 public static int getIndex(int[] arr,int num){

              //通过遍历数组元素,然后与指定元素值进行比较

              for(inti=0;i<arr.length;i++){

                     if(arr[i]==num){

                            return i;

                     }

              }

              //如果指定元素在数组中不存在,则返回-1

                     return -1;

       }
</span>


II.折半查找

      可以提高查找效率,但是必须要保证该数组是有序的。

         

<span style="font-size:18px;">  public static int halfSearch(int[] arr,int num){

           int min=0,mid,max=arr.length-1;

           while(min<=max){

                  mid=(max+min)>>1;

                  if(num>arr[mid]){

                         min=mid+1;

                  }elseif(num<arr[mid]){

                         max=mid-1;

                  }else

                         return mid;

           }

           return -1;

    }
</span>


3.二维数组

    二维数组是指数组中的数组,即把数组作为元素存入到另一个数组当中。

I.格式有:

    格式1int[][] arr = new int[3][2];

注意:定义了名称为arr的二维数组

                   二维数组中有3个一维数组

                   每一个一维数组中有2个元素

               一维数组的名称分别为arr[0], arr[1], arr[2]

               给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;

 

 格式2int[][] arr = new int[3][];

注意:二维数组中有3个一维数组

         每个一维数组都是默认初始化值null

          可以对这个三个一维数组分别进行初始化

            arr[0] = new int[3];

         arr[1]= new int[1];

         arr[2]= new int[2];

格式3int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};

       注意:定义一个名称为arr的二维数组

           二维数组中的有三个一维数组

            每一个一维数组中具体元素也都已初始化

         第一个一维数组arr[0] = {3,8,2};

           第二个一维数组arr[1] = {2,7};

           第三个一维数组arr[2] = {9,0,1,6};

            第三个一维数组的长度表示方式:arr[2].length;

    II.二维数组的遍历

 

         

<span style="font-size:18px;">  	public static void bianli(int[][] arr){

                  for(int i=0;i<arr.length;i++){

                         for(int j=0;j<arr[i].length;j++){

                                System.out.print(arr[i][j]+",");

                         }

                  }

           }</span>

注意:二维数组的实质还是一维数组,只是其数组元素是指向一维数组的引用。

------- android培训java培训、期待与您交流! ----------

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值