El caso de matriz bidimensional, método de búsqueda binaria, triángulo Yang Hui en matriz Java

1. Código y representaciones

1. Diagrama de efecto y caso de matriz bidimensional

Caso: Se sabe que hay 5 estudiantes en cada una de las 3 clases. Utilice una matriz bidimensional para ingresar dinámicamente los resultados de todos los estudiantes y calcular el promedio, los mejores y los peores resultados de cada clase. Salida a su vez, la clase con el mejor puntaje promedio, el puntaje más alto y el peor puntaje entre todos los estudiantes en las tres clases.

El código es el siguiente (ejemplo):

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]);
    }
}

Inserte la descripción de la imagen aquí

2. Método de búsqueda binaria y representaciones

El código es el siguiente (ejemplo):
Caso: Use la clase Arrays para ordenar la matriz {1,5,12,36,55,78,98} en orden ascendente, pida al usuario que ingrese un número para buscar, determine si el número existe, y si existe, emitirlo Si la posición en la matriz no existe después del orden ascendente, se emitirá un mensaje de solicitud.

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("找不到");
    }
}

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

3. Informe el número y seleccione el monitor y la imagen del efecto.

El código es el siguiente (ejemplo):
Caso: Elección del líder de la clase de acuerdo con ciertas reglas, la regla es la siguiente: circule N personas en la clase, numérelas secuencialmente, comience desde la primera persona (de 1 a 3), e informan que 3 personas se retiran del círculo y luego comienzan de nuevo desde la siguiente persona, la última persona que queda se selecciona como el monitor. De acuerdo con esta regla, el monitor seleccionado es el estudiante con el número original, asumiendo que hay 25 en el clase personal

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;
                        }
                    }
                }
            }
        }
    }
}

Inserte la descripción de la imagen aquí

4. Triángulo de Yang Hui y sus representaciones

El código es el siguiente (ejemplo):
Caso: 2. Imprima el triángulo Yang Hui (necesario para imprimir 10 líneas), de la siguiente manera: (utilizando una matriz bidimensional)
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();
        }
    }
}

Inserte la descripción de la imagen aquí

para resumir

Lo anterior es el contenido del caso relacionado con la matriz bidimensional y el método de búsqueda binaria, que se realiza principalmente mediante el uso de las características de la matriz bidimensional y la combinación de bucles.

Supongo que te gusta

Origin blog.csdn.net/StruggleBamboo/article/details/110877057
Recomendado
Clasificación