Java范例集锦(四)

范例1. 对矩陈进行转置运算

  所谓对矩陈的转置就是将矩陈的行列互换。示例代码如下:

public class ArrayRowColumnSwap {

    public static void main(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<arr.length;i++) {        //调整数组行列数据
            for(int j=0;j<arr[i].length;j++) {
                arr2[j][i]=arr[i][j];
            }
        }
        System.out.println("******转置后的矩陈是:******");
        printArray(arr2);
    }
    public static void printArray(int[][] arr) {
        for(int i=0;i<arr.length;i++) {    //遍历数组
            for(int j=0;j<arr.length;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 class Trace {

    public static void main(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<arr.length;i++) {                        //遍历数组
            for(int j=0;j<arr[i].length;j++) {
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
        for(int i=0;i<arr.length;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 class GetDay {

    public static void main(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<day.length;i++) {                        //利用fou循环将信息输出
            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 class Trap {

    public static void main(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<arr.length;i++) {
            for(int j=0;j<arr[i].length;j++) {    //遍历二维数组中的每个元素
                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 class InsertSort {

    public static void main(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<a.length;i++) {                //遍历数组元素
            System.out.print(a[i]+" ");                //输出数组元素
        }
        int tmp;                                    //定义临时变量
        int j;
        for(int i=1;i<a.length;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<a.length;i++) {
            System.out.print(a[i]+" ");
        }
    }

}

  执行结果为:

******排序前:******
12 33 23 78 20 98 28 
******排序后:******
12 20 23 28 33 78 98 

范例5. 使用冒泡法排序

  冒泡法排序的基本思路是对比相邻的元素值,如果满足条件就交换元素值,把较小的数移到数组前面,把大的元素移到数组后面。

冒泡排序其缺点是相较其他排序算法来讲就是效率不高。示例代码如下:

public class BubbleSort {

    public static void main(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<a.length;i++) {
            System.out.print("第"+i+"次冒泡排序:");
            for(int j=0;j<a.length-1;j++) {            //比较相邻两个元素,较大的数往后面冒泡
                if(a[j]>a[j+1]) {
                    int tmp;
                    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<a.length;j++) {
                System.out.print(a[j]+" ");            //输出排序后的元素
            }
            System.out.print("]\n");
        }
        
        System.out.println("*****输出冒泡排序后的结果:*****");
        for(int x: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 class NineTable {

    public static void main(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<arr.length;i++) {
            for(int j=0;j<arr[i].length;j++) {
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println("\n");
        }
    }

}

  执行结果为:

******输出九宫格:******
4    9    2    

3    5    7    

8    1    6    

 

  

  

posted @ 2017-11-11 23:55  tiger_yj  阅读(140)  评论(0编辑  收藏  举报