学习内容:
一维数组、二维数组、数组中的常见算法、数组排序中的冒泡排序;
一维数组:
声明方式有动态和静态两种;动态的为:
//动态初始化:先为数组声明以及给元素分配空间,后赋值;
int[] arr=new int[3];
arr[0]=3;//注:下标应从0开始;
arr[1]=6;
arr[2]=9;
静态的为:
//静态初始化:声明、分配空间同时赋值;
int a[]=new int[]{3,6,9};
int[]a={3,6,9};
区别是动态的为先声明后赋值,静态的为声明并赋值。在未赋值时,数组默认赋值为0,对象默认赋值为null;
二维数组:
相当于一个每个元素都为一个数组的一维数组;其静态声明方式为:
int [][]array=new int[][]{{1,2},{3,4},{5,6}};
动态声明方式为:
int[][] array=new int[2][3];
int[][] array=new int[2][];//可以只定义一维长度;
二维数组还有种特殊写法:
int[]x,y[]=new int[][]{{3,8,2},{2,7},{9,0,1,6}};
通过一道例题来练习:
//要求获取二维数组{{3,8,2},{2,7},{9,0,1,6}}所有元素的和;
int[][] array=new int[][]{{3,8,2},{2,7},{9,0,1,6}};
int sum=0;
for(int i=0;i<array.length;i++){//循环一维数组;
for(int j=0;j<array[i].length;j++){//循环二维数组;
System.out.print(array[i][j]+" ");//索引方式输出各个元素;
sum+=array[i][j];
}
}
System.out.println();
System.out.println("所有元素的和为:"+sum);
数组中的常见问题:
求最大最小值,总和,平均数;
通过声明一个临时储存变量和for循环来求最大最小值;
int[] array={3,5,1,2,8,11};
int max=0;//声明一个临时储存变量;
double sum=0;//总和变量,为求均值准确应用double声明;
double ave=0;//为求均值准确应用double声明;
for(int i=0;i<array.length;i++){
if(array[i]<array[i+1]){
max=array[i+1];
i++;
}
sum+=array[i];
ave=sum/array.length;
}
System.out.println("最大值为"+max);
System.out.println("总和为"+sum);
System.out.println("均值为"+ave);
数组排序中的冒泡排序:
利用“单挑”的方法(强的单挑下一个)将各个数组中的元素由大到小排序;
因该排序会需要两元素调换位置,所以应声明一个临时储存变量temp;
int[] array={3,5,1,2,8,11};
int temp=0;
for(int i=array.length-1;i>0;i--){//循环为有几个元素需要“单挑”,-1是因为最后一个元素不需要;
for(int j=0;j<i;j++){//循环为这个元素需要“单挑”几次;
if(array[j]<array[j+1]){//按从大到小的顺序排列时用<;
temp=array[j+1];//条件成立时调换“单挑”两方的位置;
array[j+1]=array[j];
array[j]=temp;
}
}
}
for(int i=0;i<array.length;i++){//循环为输出排序后的元素;
System.out.print(array[i]+" ");
}
System.out.println();//这行为了美观;
以上为张光雨于2020.03.05日所学习内容;
问题:
二维数组能否用冒泡排序排列?怎么排?