1.数组概念
数组(容器),保存一组相同数据类型的数据.
2.声明数组的格式
数据类型[] 数组名 = 初值; 注意:这里的数据类型指的是 数组中保存的数据的类型
3.三种声明数组的格式
int[] array = new int[数组的长度];
int[] array = new int[] {1,3,5,11};
int[] array = {1,3,5,11};
4.栈内存和堆内存
栈内存特点:
1.系统会自动帮你释放函数
2.执行顺序 先进后出
堆内存特点:
1.分配内存地址
2.有初始值 基本数据类型 初始值为0
3.有垃圾回收机制(GC) 在某一时刻被系统释放
5.数组元素反转
//封装一个函数 交换两个数
int temp = array[0];
array[0] = array[1];
array[1] = temp;
6.冒泡排序
public static void main(String[] args) {
int[] array= {3,2,5,1};
//外循环 控制一共比了多少次
//内循环 一趟比了多少次
for (int i = 0; i < array.length-1; i++) {
for (int j = 0; j < array.length-1-i; j++) {
//判断大小 相邻
//内循环-1,防止越界
//内循环-i,循环一次 确定一个数 每次都少比一次
if(array[j]>array[j+1]) {
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
7.选择排序public static void main(String[] args) {
int[] array= {3,2,5,1};
for (int i = 0; i < array.length-1; i++) {
for (int j = i+1; j < array.length; j++) {
//i=0 j=1.2.3
//i=1 j=2.3
//i=2 j=3
if (array[i]>array[j]) {
//交换
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
}
8.折半查找
public static void main(String[] args) {
int[] array= {1,22,33,44,55,66};
int key=55;
//用到的变量
int min=0;
int max=(array.length-1);
int mid=(min+max)/2;
//循环
while (array[mid]!=key) {
//判断中间角标值和key 挪动最大火最小角标
if(key>array[mid]) {
min=mid+1;
}
if(key<array[mid]) {
max=mid-1;
}
//每次循环 都要有折半的操作
mid=(min+max)/2;
//数组中没有这个数的时候
if (min>max) {
//没有这个数,用-1表示
mid=-1;
break;//跳出循环
}
}
System.out.println("该值得坐标是:"+mid);
}
9.二维数组
保存多个同类型的一位数组
数据类型[][] 数组名=初值
//遍历
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
System.out.println(array1[i][j]+"");
}
System.out.println();
}