javaSE--基础部分--数组

本单元目标

. 数组的排序 

. 数组的复杂使用  

赋值、反转  

.数组的高级使用 

添加、插入 

.二维数组的基本使用 

调试工具(debug)单步运行。必须掌握

一、数组的排序

2.1冒泡排序🌟

永远拿前面的最大值和下一个值对比

两两对比

如何交换位置?

int temp=a;//暂存

a=b;

b=temp;

此类用于演示的是冒泡排序 

  1. 将最大的值放在最后一个位置  

  两两对比,将较大者放在后面 

  永远拿前面的最大值和下一个值对比

  2. 忽略最大值,继续上述操作

 1  
 2 
 3 for (int i = 0; i < arrs.length-1; i++) {
 4 
 5     for (int j = 0; j < arrs.length-i-1; j++) {
 6 
 7         if(arrs[j]>arrs[j+1]){
 8 
 9         int temp=arrs[j];
10 
11         arrs[j]=arrs[j+1];
12 
13         arrs[j+1]=temp;
14 
15         }
16 
17     }
18 
19 }

 

 

2.2 选择排序

查出最大值的索引值,直接跟最后一个位置互换。

1.将最大的值放在最后一个位置

找到最大值,然后和最后一个位置进行互换  

2. 忽略最后一个   然后进行上述操作  

 1  
 2 
 3 for (int i = 0; i < arrs.length-1; i++) {
 4 
 5 int max=0;
 6 
 7 int index=0;
 8 
 9 for (int j = 0; j < arrs.length-i; j++) {
10 
11 if(arrs[j]>max){
12 
13 max=arrs[j];
14 
15 index=j;//获得当前最大值的下标
16 
17 }
18 
19 }
20 
21 if(index!=arrs.length-i-1){
22 
23 int temp=arrs[index];
24 
25 arrs[index]=arrs[arrs.length-i-1];
26 
27 arrs[arrs.length-i-1]=temp;
28 
29 }

 

 

二、数组的复杂使用

2.1  赋值

(1) 直接将地址进行赋值

int [] arr1=new int{3,4,5}

int arr2=arr1;

注意:不管改那个数组,另一个都会变化

(2)重新开辟内存空间,循环赋值,两个数组互不影响,占内存效率低

int[] arr1=new int[]{3,5,67,8};

int[] arr2=new int[arr1.length];

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

arr2[i]=arr1[i];

}

 

注意:对其中一个更改,另一个不受影响

2.2。反转

a。新建一个数组,将原数组内容倒序赋值给新数组,再将新数组的地址赋给原数组。

b。头尾互换。注意;奇数和偶数length/2

 此类用于演示数组的反转

  @author Administrator

  a .新建一个数组,将原数组内容倒序赋值给新数组   在将新数组的地址赋值给原数组

  int[] arr={3,5,7};//原数组

  int[] arr2=new int[arr.length];//新建的数组

  //将原数组内容倒序赋值给新数组

  int j=0;

for (int i = arr.length-1; i >=0; i--) {

arr2[j]=arr[i];

j++;

}

arr=arr2;新数组的地址赋值给原数组

 

  b. 在本数组内进行反转

int[] arr={3,5,7,34,12,45,6};

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

int temp=arr[i];

arr[i]=arr[arr.length-i-1];

arr[arr.length-i-1]=temp;

}

镜像:头尾互换  

4. 数组的高级使用

添加

此类用于演示数组的添加

@author Administrator

a. 一个未知数组

1. 判断该数组是否还有空余空间

  1.1 有

  找一个空位置放下

  获得空位置的下标,在该下标位置进行赋值

  1.2没有(扩容)

  int[] arr1=new int[arr.length+1];//新建一个数组 长度比原数组要长(length+1)

for (int i = 0; i < arr.length; i++) {//将原数组内容赋值到新数组中

arr1[i]=arr[i];

}

arr1[arr1.length-1]=num;//将数据添加到最后一个位置

arr=arr1;//将新数组的内存地址赋值给原数组

插入 

此类用于演示数组的插入     

@author Administrator

1. 数据的后移   index想要插入数据的下标

for (int i = arr.length-1; i >index; i--) {

arr[i]=arr[i-1];

}

2. 直接将数据放入到指定下标

arr[index]=num;

 

 

Day07

 

本单元内容 

. 二维数组的基本使用 

1. 异常类型 

NullPointerException  空指针异常   null.  

.二维数组的基本使用

一维数组:存储一组相同类型的数据

二维数组:存储多组相同类型的数据

二维数组的默认值:null

一维数组的默认值是:0

1)二维数组的创建:数据类型要确定,长度要确定

a 声明一个二维数组

int 【】【】arrs;

b 开辟内存空间

arrs =new int【5】【】;

没有制定小数组的长度,

arrs【0】=new int【6】;

c 存值

arrs【4】【3】=12;

d 取值

二维数组的静态初始化

int【】【】arrs= {{1,3,4,5,5}{1,3,4}{2,3,4.6}};

 

posted @ 2019-07-18 14:05  keepsummer  阅读(73)  评论(0编辑  收藏  举报