範例1. 對矩陳進行轉置運算
所謂對矩陳的轉置就是将矩陳的行列互換。示例代碼如下:
public classArrayRowColumnSwap {public static voidmain(String[] args) {//TODO Auto-generated method stub
int arr[][]=new int[][]{{10,11,12},{20,21,22},{30,31,32}}; //建立二維數組
System.out.println("******轉置前的矩陳是:******");
printArray(arr);//輸出二維數組
int arr2[][]=new int[arr.length][arr.length];for(int i=0; i
for(int j=0;j
arr2[j][i]=arr[i][j];
}
}
System.out.println("******轉置後的矩陳是:******");
printArray(arr2);
}public static void printArray(int[][] arr) {for(int i=0;i
for(int j=0;j
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
其執行結果如下:
******轉置前的矩陳是:******
10 11 12
20 21 22
30 31 32
******轉置後的矩陳是:******
10 20 30
11 21 31
12 22 32
範例2. 求方陳的迹
方陳的迹,即方陳主對角線上所有元素的和。示例代碼如下:
public classTrace {public static voidmain(String[] args) {//TODO Auto-generated method stub
int arr[][]= { //建立二維數組
{5,10,15,20},
{10,15,20,25},
{15,20,25,30},
{20,25,30,35}
};int tr=0;
System.out.println("********方陳arr[][]是:********");for(int i=0;i
for(int j=0;j
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}for(int i=0;i
tr+=arr[i][i];
}
System.out.println("方陳arr[][]的迹是:"+tr);
}
}
執行結果是:
********方陳arr[][]是:********
5 10 15 20
10 15 20 25
15 20 25 30
20 25 30 35方陳arr[][]的迹是:80
範例3. 周遊數組
3.1. 周遊一
public classGetDay {public static voidmain(String[] args) {//TODO Auto-generated method stub
int day[]= {31,28,31,30,31,30,31,31,30,31,30,31}; //建立并初始化一維數組
for(int i=0;i
System.out.print((i+1)+"月有"+day[i]+"天"+"\t\t");if((i+1)%3==0) { //如果i+1之和求餘為零
System.out.print("\n"); //輸出回車
}
}
}
}
執行結果顯示如下:
1月有31天 2月有28天 3月有31天
4月有30天 5月有31天 6月有30天
7月有31天 8月有31天 9月有30天
10月有31天 11月有30天 12月有31天
3.2. 周遊二維數組,示例代碼如下:
public classTrap {public static voidmain(String[] args) {//TODO Auto-generated method stub
System.out.println("*****利用for循環周遊二維數組*****");int arr[][]=new int[][] {
{10,20},
{12,13,14,15,16},
{17,18,19}
};//建立二維數組
for(int i=0;i
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
System.out.println("*****使用foreach語句周遊二維數組*****");for(int[] x:arr) { //外層循環變量為一維數組
for(int y:x) { //循環周遊每一個數組元素
System.out.print(y+" ");
}
System.out.println();
}
}
}
執行結果為:
*****利用for循環周遊二維數組*****
10 20
12 13 14 15 16
17 18 19
*****使用foreach語句周遊二維數組*****
10 20
12 13 14 15 16
17 18 19
範例4. 使用直接插入法排序
public classInsertSort {public static voidmain(String[] args) {//TODO Auto-generated method stub
int[] a=new int[] {12,33,23,78,20,98,28}; //建立數組并初始化
System.out.println("******排序前:******");for(int i=0;i
System.out.print(a[i]+" "); //輸出數組元素
}int tmp; //定義臨時變量
intj;for(int i=1;i
tmp=a[i]; //儲存臨時變量
for(j=i-1;j>=0&&a[j]>tmp;j--) {
a[j+1]=a[j]; //數組元素互換
}
a[j+1]=tmp; //在排序位置插入資料
}
System.out.println("\n******排序後:******");for(int i=0;i
System.out.print(a[i]+" ");
}
}
}
執行結果為:
******排序前:******
12 33 23 78 20 98 28
******排序後:******
12 20 23 28 33 78 98
範例5. 使用冒泡法排序
冒泡法排序的基本思路是對比相鄰的元素值,如果滿足條件就交換元素值,把較小的數移到數組前面,把大的元素移到數組後面。
冒泡排序其缺點是相較其他排序算法來講就是效率不高。示例代碼如下:
public classBubbleSort {public static voidmain(String[] args) {//TODO Auto-generated method stub
int a[]=new int[] {12,33,23,46,78,9,18}; //聲明并初始化一維數組
System.out.println("***********冒泡法排序的過程是:***********");for(int i=1;i
System.out.print("第"+i+"次冒泡排序:");for(int j=0;j
if(a[j]>a[j+1]) {inttmp;
tmp=a[j]; //把第一個元素值保持到臨時變量中
a[j]=a[j+1]; //把第二個元素值儲存到第一個元素中
a[j+1]=tmp; //把第一個元素原值儲存到第二個元素中
}
System.out.print(a[j]+" "); //輸出排序後的數組元素
}
System.out.print("[");for(int j=a.length-i;j
System.out.print(a[j]+" "); //輸出排序後的元素
}
System.out.print("]\n");
}
System.out.println("*****輸出冒泡排序後的結果:*****");for(intx:a) {
System.out.print(x+" ");
}
}
}
執行後其結果是:
***********冒泡法排序的過程是:***********第1次冒泡排序:12 23 33 46 9 18 [78]
第2次冒泡排序:12 23 33 9 18 46 [46 78]
第3次冒泡排序:12 23 9 18 33 46 [33 46 78]
第4次冒泡排序:12 9 18 23 33 46 [23 33 46 78]
第5次冒泡排序:9 12 18 23 33 46 [18 23 33 46 78]
第6次冒泡排序:9 12 18 23 33 46 [12 18 23 33 46 78]*****輸出冒泡排序後的結果:*****
9 12 18 23 33 46 78
範例6. 輸出九宮格
九宮格的思想是,在一個三維方陳的九個元素中分别填入1~9個數,使得每一行、列和對角線上3個數的和都等于15。示例代碼如下:
public classNineTable {public static voidmain(String[] args) {//TODO Auto-generated method stub
int arr[][]=new int[3][3]; //建立一個3階方陳
int a=2; //第三行的行下标
int b=1; //第2列的列下标
for(int i=1;i<=9;i++) { //給數組指派
arr[a++][b++]=i;if(i%3==0) { //如果i求餘為0
a-=2;
b-=1;
}else{
a=a%3;
b=b%3;
}
}
System.out.println("******輸出九宮格:******");for(int i=0;i
System.out.print(arr[i][j]+"\t");
}
System.out.println("\n");
}
}
}
執行結果為:
******輸出九宮格:******
4 9 2
3 5 7
8 1 6