二维数组
概念:存储数组的数组
名词
长度:二维数组中一维数组的个数
元素:一个一维数组
下标:一维在二维数组中的位置
步骤
1.声明
数据类型[][] 数组名;
2.创建
动态
带值
数组名=new int[][]{
{值1....值n},
{值1....值n},
{值1....值n},
};
不带值
数组名=new 数据类型[二维数组中一维数组的个数x][一维数组中元素的个数y];
y可写可不写
特点:可以将声明与创建分开,也可以将写一起
静态
数据类型[]][] 数组名={
{值1....值n},
{值1....值n},
{值1....值n},
};
特点:声明与创建必须同时进行.
3.操作
改
修改指定位置的一维数组
数组名[下标]=新的一维数组
修改指定位置的元素
数组名[下标1][下标2]=值;
下标1:一维数组在二维数组中的位置
下标2:元素在一维数组中的位置
修改整个二维数组
数组名=新的二维数组
查
查询指定位置的一维数组
数组名[下标]
查询指定位置的元素
数组名[下标1][下标2];
下标1:一维数组在二维数组中的位置
下标2:元素在一维数组中的位置
查询二维数组的长度
数组名.length
注意:二维数组的长度为一维数组的个数,不是所有元素的个数.
杨辉三角
当j==0或j==i时值为1;
j<i时值为:当前位置[i][j]=上一行[i-1][j]+上一行[i-1][j-1]
j>i时值为0;
i为行,j为列.
代码:
int[][] a=new int [9][9];
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
if(j==0||j==i){
a[i][j]=1;
}else if(j<i){
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
}
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
算法
概念:公式
优点:提高计算机运算效率
常用的算法:
1.两数交换
int a=10;
int b=2;
int c=a;
a=b;
b=c;
2.寻找最值(最大值/最小值)
int[] nums={};
int max=nums[0];
for(int i=0;i<nums.length;i++){
int x=nums[i];
if(x>max){
max=x;
}
}
System.out.println(max);
3.寻找最值得下标
int [] a={};
int minIndex=0;
for(int i=0;i<a.length;i++){
int x=a[i];
if(a[minIndex]>x]){
minIndex=x;
}
}
4.将最小值或最大值移动到最后
冒泡
思想:相邻比较,交换位置
int[] a={};
for(int i=0;i<a.length-1;i++){
if(a[i]<a[i+1]){
int x=a[i];
a[i]=a[i+1];
a[i+1]=x;
}
}
冒泡排序
int[] a={};
for(int j=0;j<a.length-1;j++){
for(int i=0;i<a.length-1;i++){
if(a[i]<a[i+1]){
int x=a[i];
a[i]=a[i+1];
a[i+1]=x;
}
}
}
选择排序
int [] a={};
for(int j=0;j<a.length;j++){
int tagIndex=j;
int maxIndex=j;
for(int i=j;i<a.length;i++){
if(a[maxIndex]<a[i]){
maxIndex=i;
}
}
if(maxIndex!=tagIndex){
int x=a[maxIndex];
a[maxIndex]=a[tagIndex];
a[tagIndex]=x;
}
}
for(int i:a){
System.out.println(i);
}