重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先这里是创建一个二维数组。二维数组创建的方式有两种
创新互联主营殷都网站建设的网络公司,主营网站建设方案,app软件开发,殷都h5成都微信小程序搭建,殷都网站营销推广欢迎殷都等地区企业咨询
① 例如创建一个5 x 5的二维数组(5行5列),可以直接int[][] arr = new int[5][5];
此二维数组共25个元素,默认值都为0
②如果想创建一个固定5行但列不一致的二维数组就不能像上面一样创建
例如:第一列1个元素,第二列2个元素
此时你只能创建一个固定行数的二维数组,列数根据需要调整
int[][] arr = new int[5][];
此时arr就像下图,因为此时没有进行赋值,所以默认值为null
此时你的代码中通过循环来创建多个一维数组,将其地址赋值如下图
0x11 存放了一维数组一个元素的地址
0x22存放了一维数组两个元素的地址
......
然后通过arr[0][0],arr[1][0]等就能访问到数组中存放的数值了
总结下来就是:
如果需要创建的二维数组列数都是一致的,就选用int[][] arr = new int[行数][固定列数];这样的方式
如果需要创建的二维数组列数不一致:就选用int[][] arr = new int[行数][];
这是分治求最大子数组和
首先重要点是:递归,这个是关键,何为递归,就是自己调用自己,比如这个代码中的helper方法,就是递归,该代码运行时,会自己调用自己很多次,数组就会两分,两分再两分,这样就会把大的问题分解成小的问题,最后把小的问题汇集起来得到答案。
你表达不出的东西和没理解的就是这个递归,别小看这个递归,这是本代码的关键点,最重要的部分。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入你要输的数组长度:");
int lenth = s.nextInt();
System.out.println("请分别输入"+lenth+"个数:");
int[] shuZu = new int[lenth];
for(int i=0;ilenth;i++)
{
shuZu[i] = s.nextInt();
}
int max = shuZu[0];
int min = shuZu[0];
System.out.println("您输入的数组为:");
for(int i=0;ilenth;i++)
{
System.out.print(" "+shuZu[i] );
if(maxshuZu[i])
max = shuZu[i];
if(minshuZu[i])
min = shuZu[i];
}
System.out.println("\n最大值:max="+max );
System.out.println("最小值:min="+min );
}
}
这个不知道满不满足要求呢?
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
//初始化一个测试的二维数组
int[][] a = new int[][] { { 34,234,543,2,42,224 }, { 234,56,88,241,564,234,555,24 }, { 13,444,534,76,9999,894,34 } };
System.out.println("max value is:" + getMaxValue1(a));
System.out.println("max value is:" + getMaxValue2(a));
}
/**
* 方法1:遍历二维数组的所有的元素与当前最大的值比较,并记录
*/
static int getMaxValue1(int[][] a){
int maxValue = 0;//用于记录当然最大值
if(a!=null a.length!=0)
for (int[] a1 : a) {
for (int i : a1) {
if(maxValuei)maxValue = i;
}
}
return maxValue;
}
/**
* 方法2:对子数组进行排序,然后比较子数组中最大的值。当然这里只求最大值也没必要排序-_-!!,只是体现了一种思想
*/
static int getMaxValue2(int[][] a){
int maxValue = 0;
if(a!=null a.length!=0)
for (int[] a1 : a) {
Arrays.sort(a1);//对a1进行排序,升序的
if(maxValuea1[a1.length-1])maxValue = a1[a1.length-1];//比较子数组中最大的值
}
return maxValue;
}
}