数组(容器)
* 保存一组相同数据类型的数据 * 数据类型 变量名 = 初值; * 声明数组格式: * 数据类型[] 数组名 = 初值; * 注意:这里的数据类型 指的是 数组中保存的数据类型 * * 数组声明方式一 * int[] array = new int[数组的长度]; * * 数组在堆内存中 开辟的时一块连续的内存空间
栈内存特点
* 1.当函数执行完毕 系统会自动帮你释放
* 2.先进后出
//声明数组方式二(又给长度又给元素)
int[] array = new int[]{1,3,5,11};
//语法糖(方式三)
int[] array1 = {1,3,5,7,9};
冒泡排序
* 核心思想:相邻两个数比较 换位
* 外循环控制一共比了多少趟
* 内循环控制一趟比了多少次
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 tep = array[j];
array[j]=array[j+1];
array[j+1] = tep;
}
}
}
选择排序
* 核心思想:选择一个数(选第一个数)和其他的数进行比较 交换
int []array =new int[]{3,2,5,1};
for (int i = 0; i < array.length-1; i++) {
for (int j = i+1; j < array.length; j++) {
//用第0个数 和剩下的每一个数比较
//量化思维
if (array[i]>array[j]) {
int tep = array[j];
array[j]=array[i];
array[i] = tep;
}
}
}
折半查找(必须有序的数组)
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;
}
}
二维数组
二维数组(容器)
* 保存多个相同类型的一维数组
* 数据类型[][][] 数组名 = 初值
*
*
* (几维数组 就几个[])
* 三维数组
* 保存多个相同类型的二维数组
*
* 羊肉串
//声明一个二维数组
//这个二维数组中 有两个一维数组
//每个一维数组中又三个元素
int[][]array = new int[2][3];
//array.length 表示 有几个一维数组;
System.out.println(array.length);
//声明方式二
//1,11,111 /2,22,22
int[][]array1 = new int[][]{
{1,11,111},
{2,22,222},
};
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
System.out.print(array1[i][j]+" ");
}
System.out.println();
}