第一阶段第十天(数组排序(二维),双色球,杨辉三角)

来源:互联网 发布:sql删除重复保留唯一 编辑:程序博客网 时间:2024/06/07 01:06
1、对一维数组{12,21,9,45,32,23}进行冒泡排序
package day10;import java.util.Arrays; /** *  * 对一维数组{12,21,9,45,32,23}进行冒泡排序 * */public class Demo10_1 {        /**         * 入口文件         * @param args         */        public static void main(String[] args) {                int [] arrs={12,21,9,45,32,23};//定义数组                //调用冒泡排序的函数来实现冒泡排序                int [] ars=maoPao(arrs);                System.out.println(Arrays.toString(ars));        }        /**         * 实现冒泡排序         * @param arrs         * @return         */        public static int [] maoPao(int [] arrs){                //外循环                for(int i=0;i<arrs.length-1;i++){                        //内循环                        for(int j=0;j<arrs.length-i-1;j++){                                if (arrs[j]>arrs[j+1]){//前面数据大于后面数据,则交换数据                                        int temp=arrs[j];//创建一个临时变量                                        arrs[j]=arrs[j+1];                                        arrs[j+1]=temp;                                }                                                         }                }                return arrs;        }}


2、模式实现双色球抽奖游戏
package day10; import java.util.Arrays; /** * 模式实现双色球抽奖游戏 */public class Demo10_2 {        public static void main(String[] args) {                int arr[]=new int[7];        //第一红色球,33选6          //第二蓝色球  16选1  红色球和蓝色球可以一样的,互不干扰                int blue=(int)(Math.random()*16)+1;                arr[6]=blue;                         int red[]=new int[6];                //外层循环是控制给红色球数组进行赋值用的                for(int i=0;i<red.length;i++){                        int value=(int)(Math.random()*33)+1;//1--33的随机数                        boolean flag=true;                        //用标记来判断是否将生成的随机数存入数组                                                //内层循环  为了判断去重                        //内层循环遍历已经生成的随机数,i                        for(int k=0;k<i;k++){                                if (value==arr[k]) {                                        flag=false;//重复了,不能存                                        i--;                                        break;//假设已经知道重复了,那么不需要往后面进行比较了,直接break                                }                        }                                if (flag==true) {                                arr[i]=value;                        }else {                                System.out.println("生成的随机数重复了,不能存入数组,重复是:"+value);                                System.out.println("是第:"+i+"次重复了");                        }                                 }                System.out.println(Arrays.toString(arr));        }}


3、遍历二维数组 {{12,11,9},{67,12},{33,35,39,40}},并输出打印二维数组中元素的个数。
package day10; import java.util.Arrays; /** *  * 遍历二维数组 {{12,11,9},{67,12},{33,35,39,40}}, * 并输出打印二维数组中元素的个数。 * */public class Demo10_3 {        /**         * 入口文件         * @param args         */        public static void main(String[] args) {                int [][] arrs={{12,11,9},{67,12},{33,35,39,40}};                query(arrs);                System.out.println("数组中元素的个数"+getCount(arrs));        }        /**         * 实现遍历二维数组         * @param arrs         */        public static void query(int [][] arrs){                //遍历有几个一维数组                for(int i=0;i<arrs.length;i++){                        System.out.println("此二维数组中有一维数组:"+Arrays.toString(arrs[i]));                        for(int j=0;j<arrs[i].length;j++){                                System.out.println("元素信息为"+arrs[i][j]);                        }                }        }        /**         * 实现获取二维数组中元素的个数         * @param arrs         * @return         */        public static int  getCount(int [][] arrs){                int count=0;//定义一个变量存个数                //遍历一维数组                for(int i=0;i<arrs.length;i++){                        //遍历一维数组中的元素信息                        for(int j=0;j<arrs[i].length;j++){                                count++;                        }                }                return count;        }}


4、求3题中二维数组各数字的和信息
package day10;/** *  * 求二维数组 {{12,11,9},{67,12},{33,35,39,40}}各数字的和信息 * */public class Demo10_4 {        /**         * 入口文件         * @param args         */        public static void main(String[] args) {                int [][] arrs= {{12,11,9},{67,12},{33,35,39,40}};//定义二维数组                int sum=getSum(arrs);                System.out.println("各数字的和为"+sum);        }        /**         * 实现数组中个数字求和         * @param arrs         * @return         */        public static int getSum(int [][] arrs){                int sum=0;//定义变量sum存和信息                //遍历一维数组                for(int i=0;i<arrs.length;i++){                        //遍历数组中的元素信息                        for(int j=0;j<arrs[i].length;j++){                                sum+=arrs[i][j];//依次求和                        }                }                return sum;        }}


5.
package day10;  /** *  * 已知一个二维数组A 表示一个矩阵,求AT。* 其中,AT 表示矩阵的转置。矩阵转置的含义:表示把一个矩阵行列互换。 */public class Demo10_5 {    public static void main(String[] args) {        int [][] arrs={{1,2,3},{4,5,6}};        zhuanZhi(arrs);    }    public static void zhuanZhi(int [][] arrs){        int arr[][] =new int [arrs[0].length][arrs.length];        for(int i=0;i<arrs.length;i++){            for(int j=0;j<arrs[i].length;j++){                arr[j][i]=arrs[i][j];                             }        }        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();        }    }}


6. *给定一个数组,把这个数组中所有元素顺序进行颠倒。
  1,2,3,4,5


  5,4,3,2,1
package day10; import java.util.Arrays; /** *  * *给定一个数组,把这个数组中所有元素顺序进行颠倒。 * 1,2,3,4,5 * 5,4,3,2,1 * */public class Demo10_7 {        public static void main(String[] args) {                int [] arrs={1,2,3,4,5};                                 System.out.println(Arrays.toString(paiXu(arrs)));        }        public static int [] paiXu(int [] arrs){                for(int i=0;i<arrs.length;i++){                        for(int j=0;j<arrs.length-i-1;j++){                                if(arrs[j]<arrs[j+1]){                                        int temp=arrs[j];                                        arrs[j]=arrs[j+1];                                        arrs[j+1]=temp;                                }                        }                }                return arrs;        }}


7.
package day10; import java.util.Scanner; /** * 7、* 输出杨辉三角(选做)*杨辉三角如下:*1*1 1*1 2 1*1 3 3 1*1 4 6 4 1*……*杨辉三角的特点:*1. 第i 行有i 个元素*2. 每一行的第一个元素和最后一个元素都为1*3. 除了1 之外,每个元素的值,都等于上一行同位置的元素以及前一个元素的和。*例如:*1 4 6 4 1 的下一行*1 a1 a2 a3 a4 1*a1 = 4 + 1 = 5*a2 = 6 + 4 = 10*a3 = 4 + 6 = 10*a4 = 1 + 4 = 5*依次类推。*要求:读入一个整数n,输出杨辉三角的前n 行 */public class Demo10_6 {         public static void main(String[] args){                Scanner s=new Scanner(System.in);            System.out.println("请输入整数n:");            int n=s.nextInt();            sanJiao(n);        }        public static void sanJiao(int n){               int[][] a=new int[n][n];               for (int i=0,j=0;i<n;i++,j++){                               a[i][0]=1;                    a[i][j]=1;                                        if(j!=0)                    System.out.print(a[i][0]+"\t");                    for (int k=1;k<j ;k++ ){                         a[i][k]=a[i-1][k-1]+a[i-1][k];                         System.out.print(a[i][k]+"\t");                    }                         System.out.println(a[i][j]);                    }        }}