冒泡排序与二维数组
冒泡排序
- 算法步骤
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
public class maopao {
public static void main(String[] args) {
int a[]={1,6,54,264,890,3000,21000,200000,8000000};
boolean isChange=false;
//定义循环次数
for(int i=0;i<a.length-1;i++){
//循环比较
for(int j=0;j<a.length-1-i;j++){
if(a[j]>a[j+1]){//前一个比后一个大,则不满足升序
//需要交换
int tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
isChange=true;
}
}if(isChange==false){//本轮没有任何交换
break;
}
}
System.out.println(Arrays.toString(a));
}
}
二维数组
二维数组的动态初始化方式
数据类型[][]数组名称 = new 数据类型[一维数组的个数] [ 每一个一维数组的元素个数 ]
左边可以写成:
数据类型[][]数组名称
数据类型 数组名称[][]
数据类型[]数组名称[]
右边可以写成:
一维数组的个数:有几个值信息int [][]arr = new int [3][2]
代表的是每一个一维数组的个数:每个一维数组有几个元素信息
public class demo1 {
public static void main(String[] args) {
int[][] a=new int[5][5];
int[][] b;
b=new int[3][2];
a[0][0]=1;
int [][] c={{1,2,3,6,6,6,5,4,5},{1,2,5,2},{12,2,52,6,1},{15,2,5,12}};
System.out.println(Arrays.toString(c[3]));
}
}
二维数组的遍历
什么是遍历二维数组?
所谓的遍历二维数组,实际是遍历一维数组,然后遍历每个一维数组的信息。
常用方法:forfor循环
public class demo2 {
public static void main(String[] args) {
int a[][]=new int[5][5];
for (int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
a[i][j]=(int)(Math.random()*100);
}
}
for(int i=0;i<a.length;i++){
System.out.println(Arrays.toString(a[i]));
}
int total=0;
for (int i = 0; i < a.length; i++) {
int sum=0;
for (int j = 0; j < a.length ;j++) {
sum+=a[i][j];
}total+=sum;
System.out.println((i+1)+"班级的总分"+sum);
} System.out.println("全年级总分"+total);
}
}