欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java数组中的二维数组、二分查找法、杨辉三角的案例

程序员文章站 2022-03-26 10:31:07
二维数组、二分查找法、杨辉三角一、代码及效果图1.二维数组案例及效果图2.二分查找法及效果图3.报数选班长及效果图4.杨辉三角及效果图总结一、代码及效果图1.二维数组案例及效果图案例:已知有3个班级各5名学员,请使用二维数组动态录入所有学员成绩,并计算各个班级的平均成绩,最好成绩和最差成绩。依次输出,平均成绩最好的班,三个班所有学员中成绩最高的分数,最差的分数。代码如下(示例):public class Work3 { public static void main(String[] ar...

一、代码及效果图

1.二维数组案例及效果图

案例:已知有3个班级各5名学员,请使用二维数组动态录入所有学员成绩,并计算各个班级的平均成绩,最好成绩和最差成绩。依次输出,平均成绩最好的班,三个班所有学员中成绩最高的分数,最差的分数。

代码如下(示例):

public class Work3 {
    public static void main(String[] args) {
        double [][] scores=new double[3][5];
        double [] avg=new double[3];//平均成绩
        double [] max=new double[3];//最好成绩
        double [] min=new double[3];//最差成绩
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < scores.length; i++) {
            double sum=0;
            double maxInit=-1;
            double minInit=1000;
            for (int j = 0; j < scores[i].length; j++) {
                //成绩录入
                System.out.println("请输入第"+(i+1)+"个班的第"+(j+1)+"个学员的成绩:");
                scores[i][j]=sc.nextDouble();
                sum+=scores[i][j];//求和
                //求每个班最大值
                if(scores[i][j]>maxInit){
                    maxInit=scores[i][j];
                }
                //求每个班最小值
                if(scores[i][j]<minInit){
                    minInit=scores[i][j];
                }
            }
            avg[i]=sum/5;
            max[i]=maxInit;
            min[i]=minInit;
        }

        //求出平均成绩最好的班
        double Max=avg[0];
        int MaxIndex=0;
        for (int i = 1; i < avg.length; i++) {
            if(avg[i]>Max){
                Max=avg[i];
                MaxIndex=i;
            }
        }
        System.out.println("平均成绩最好的班是"+(MaxIndex+1)+"班,分数是"+Max);
        //所有学员中分数最高和最差
        Arrays.sort(max);
        Arrays.sort(min);
        System.out.println(max[2]);
        System.out.println(min[0]);
    }
}

Java数组中的二维数组、二分查找法、杨辉三角的案例

2.二分查找法及效果图

代码如下(示例):
案例:使用Arrays类升序排列数组{1,5,12,36,55,78,98},请用户输入一个要查找的数字,判断是否存在该数字,如果存在,输出它在升序后数组中的位置,不存在,输出提示信息。

public class Work4 {
    public static void main(String[] args) {
    int[] arr={1,5,12,36,55,78,98};
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个要查找的数字:");
        int X=sc.nextInt();
        fun(arr,X);
    }

    private static void fun(int[] arr,int X) {
        int start=0,end=arr.length-1,mid=(start+end)/2;
        while (start<=end){
            if (X==arr[mid]){
                System.out.println("找到了,下标为:"+mid);
                return;
            }else if (X>arr[mid]){
                start=mid+1;
            }else {
                end=mid-1;
            }
            mid=(start+end)/2;
        }
        System.out.println("找不到");
    }
}

Java数组中的二维数组、二分查找法、杨辉三角的案例
Java数组中的二维数组、二分查找法、杨辉三角的案例

3.报数选班长及效果图

代码如下(示例):
案例:按照一定的规则选举班长,规则如下:将班里的N个人围城一圈,顺序编号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,然后从下一个人重新开始,最后留下的那个人就被选为班长,请问按照这个规则,选出的班长是原来编号为第几号的学生,假设班上有25个人

public class Work01 {
    public static void main(String[] args) {
        int [] stus=new int[25];
        //编号
        for (int i = 0; i < stus.length; i++) {
            stus[i]=i+1;
        }
        //标记法,用0表示退出
        int k=0;//报数器
        int num=0;//表示淘汰的人数
        while (true){//重复转圈报数
            //表示实现一轮报数
            for (int i = 0; i < stus.length; i++) {
                if (stus[i]!=0){//过滤掉淘汰的人
                    k++;//报数
                    if (k%3==0){
                        stus[i]=0;//淘汰
                        num++;
                        if (num==24){//淘汰人数为24,结束游戏
                            System.out.println(Arrays.toString(stus));
                            return;
                        }
                    }
                }
            }
        }
    }
}

Java数组中的二维数组、二分查找法、杨辉三角的案例

4.杨辉三角及效果图

代码如下(示例):
案例:2.打印杨辉三角形(要求打印10行),如下所示:(使用二维数组)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

package work1;

public class Work02 {
    public static void main(String[] args) {
        //定义一个长度为10的二维数组
        int [][] num=new int[10][];
        //行数和个数的关系
        for (int i = 0; i <num.length ; i++) {
            num[i]=new int[i+1];
        }
        for (int i = 0; i < num.length; i++) {
            for (int j = 0; j < num[i].length; j++) {
                if(j==0||j==num[i].length-1){
                    num[i][j]=1;//左右端点
                }else {
                    num[i][j]=num[i-1][j-1]+num[i-1][j];
                }
            }
        }
        //输出
        for (int i = 0; i < num.length; i++) {
            //输出每行前面的空格
            for (int j = 0; j < 10-i; j++) {
                System.out.print("  ");
            }
            for (int j = 0; j < num[i].length; j++) {
                if(num[i][j]>=100)
                    System.out.print(num[i][j]+" ");
                else if(num[i][j]>=10)
                    System.out.print(num[i][j]+"  ");
                else
                    System.out.print(num[i][j]+"   ");
            }
            System.out.println();
        }
    }
}

Java数组中的二维数组、二分查找法、杨辉三角的案例

总结

以上就是二维数组和二分查找法相关的案例内容,主要是利用二维数组的特点以及循环的结合来实现的。

本文地址:https://blog.csdn.net/StruggleBamboo/article/details/110877057