二维数组
如果把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格。
- 二维数组的声明格式
数据类型 数组名[][];
数组名 = new 数据类型[行的个数] [列的个数];
也可以用下面这种方式
数据类型 数组名[][]=new 数据类型[行的个数] [列的个数]; - 二维数组金泰初始化
数据类型 数组名[][] = {
{第0行初值},
{第1行初值},
…
{第n行初值},
}; - 二维数组的遍历
public class Demo1
{
public static void main(String[] args){
int a[][]=new int[2][3];
a[0][0]=1;
a[0][1]=2;
a[0][2]=3;
a[1][0]=4;
a[1][1]=5;
a[1][2]=6;
//遍历二维数组
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();
}
}
}
用for循环的嵌套来遍历二维数组,多维数组就使用多少个多程循环来遍历。
冒泡排序
原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,
这样一趟过去后,最大或最小的数字被交换到了最后一位,
然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子
例子为从小到大排序,
原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |
第一趟排序(外循环)
第一次两两比较6 > 2交换(内循环)
交换前状态| 6 | 2 | 4 | 1 | 5 | 9 |
交换后状态| 2 | 6 | 4 | 1 | 5 | 9 |
第二次两两比较,6 > 4交换
交换前状态| 2 | 6 | 4 | 1 | 5 | 9 |
交换后状态| 2 | 4 | 6 | 1 | 5 | 9 |
第三次两两比较,6 > 1交换
交换前状态| 2 | 4 | 6 | 1 | 5 | 9 |
交换后状态| 2 | 4 | 1 | 6 | 5 | 9 |
第四次两两比较,6 > 5交换
交换前状态| 2 | 4 | 1 | 6 | 5 | 9 |
交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |
第五次两两比较,6 < 9不交换
交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |
交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |
第二趟排序(外循环)
第一次两两比较2 < 4不交换
交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |
交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |
第二次两两比较,4 > 1交换
交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |
第三次两两比较,4 < 5不交换
交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |
第四次两两比较,5 < 6不交换
交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |
第三趟排序(外循环)
第一次两两比较2 > 1交换
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
第二次两两比较,2 < 4不交换
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
第三次两两比较,4 < 5不交换
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
第四趟排序(外循环)无交换
第五趟排序(外循环)无交换
排序完毕,输出最终结果1 2 4 5 6 9
代码仅供参考
//冒泡排序-从大到小
class Demo9
{
public static void main(String[] args)
{
int a[]={11,22,33,44,55,66,77,88,99};
/* for (i = 0; i < n; i++)
for (j = 1; j < n - i; j++)
if (a[j - 1] > a[j])
Swap(a[j - 1], a[j]); */
for (int i =0;i<a.length-1 ;i++ )
{
for (int j=0;j<a.length-i-1 ;j++ )
{
if(a[j]<a[j+1])
{
int temp = a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
System.out.println("第"+(i+1)+"次排序的结果:");
for (int j=0;j<a.length ;j++ )
{
System.out.print(a[j]+"\t");
}
System.out.println();
}
System.out.println("最终的排序结果是:");
for (int i=0;i<a.length ;i++ )
{
System.out.print(a[i]+"\t");
}
}
}