Java---Capítulo 4 (Conceptos básicos de matrices, clasificación por burbujas, búsqueda binaria, matrices multidimensionales)

inserte la descripción de la imagen aquí

una matriz

conocimiento básico

concepto:
Una matriz es una estructura de datos común en los lenguajes de programación que puede almacenar un conjunto de datos del mismo tipo

Función:
almacena un conjunto de datos del mismo tipo, conveniente para estadísticas matemáticas (valor máximo, valor mínimo, valor promedio y suma) y muestra información

definición:

public class study {
    
    
    public static void main(String[] args) {
    
    
        //1
        byte[] bytes = new byte[]{
    
    1,2,3,4,5};
        //2
        int[] numbers = {
    
    1,2,3,4,5};
    }
}

La primera:

  • Solo se puede usar cuando se define una matriz y se asigna un valor al mismo tiempo.

El segundo tipo:

  • Se puede usar directamente al definir una matriz, o se puede definir primero y luego asignar para usar

Valores predeterminados en la matriz:

  • El valor predeterminado en una matriz de números de punto flotante de precisión doble es 0,0
  • El valor predeterminado en una matriz de números de punto flotante de precisión simple es 0.0f
  • El elemento predeterminado de la matriz de tipo booleano es falso
  • El elemento predeterminado en la matriz de tipo char es '\u0000'
  • El valor predeterminado para matrices enteras es 0

Elementos basicos:
inserte la descripción de la imagen aquí

operación de matriz

Recorrido de matriz:
observe todos los elementos de la matriz

La longitud de la matriz -----> matriz.longitud

public class study {
    
    
    public static void main(String[] args) {
    
    
        int[] arr1 = {
    
    1,2,3,4,5};
        for(int i=0;i<arr1.length;i++){
    
    
            System.out.println(arr1[i]);
        }
    }
}

Operación de modificación de matriz:
caso:
la matriz existente 10, 12, 17, 32, 39, 50, se requiere elevar al cuadrado todos los elementos de la matriz que pueden ser divisibles por 3, y luego volver a colocar el elemento en su posición

public class study {
    
    
    public static void main(String[] args) {
    
    
        int[] arr1 = {
    
    10,12,17,32,39,50};
        for(int i=0;i<arr1.length;i++){
    
    
            if(arr1[i]%3==0){
    
    
                arr1[i] *= arr1[i];
            }
        }
    }
}

Caso de operación de suma de matrices
:
En cierta agencia de boletos aéreos, hay 4 personas, A, B, C, D, E, que están haciendo fila para comprar boletos. El buen amigo de B, F, también está haciendo fila para comprar boletos ahora, y encuentra que B está haciendo cola, por lo que salta en línea a B Después de eso, utilice el conocimiento relevante de matrices para completar el diseño del programa

public class study {
    
    
    public static void main(String[] args) {
    
    
        String[] arr = {
    
    "A","B","C","D","E"};
        //A B C D E
        //A B F C D E
        String[] new_arr = new String[arr.length+1];
        int co = 2;
        for(int i=0;i<co;i++){
    
    
            new_arr[i]=arr[i];
        }
        new_arr[co]="F";
        for(int j=co;j<new_arr.length;j++){
    
    
            new_arr[j+1]=arr[j];
        }
        arr = new_arr;
        for(int m=0;m<arr.length;m++){
    
    
            System.out.println(arr[m]);
        }
    }
}

Caso de operación de eliminación de matriz
1:
en el caso anterior, el comprador del boleto C se fue por algo y había una persona menos en la cola. Utilice el conocimiento relevante de la matriz para completar el diseño del programa.

public class study {
    
    
    public static void main(String[] args) {
    
    
        String[] arr = {
    
    "A","B","C","D","E"};
        //A B C D E
        //A B D E
        String[] new_arr = new String[arr.length-1];
        for(int i=0;i<2;i++){
    
    
            new_arr[i]=arr[i];
        }
        for(int j=3;j<arr.length;j++){
    
    
            new_arr[j-1]=arr[j];
        }
        arr = new_arr;
        for(int i=0;i<arr.length;i++){
    
    
            System.out.println(arr[i]);
        }
    }
}

copia de la matriz
gramática:

System.arraycopy(原数组,拷贝的开始位置,目标数组,存放的开始位置,拷贝的元素个数);

De esta manera, podemos reemplazar la copia del bucle for en la pregunta anterior con esta operación de sintaxis

        String[] arr = {
    
    "A","B","C","D","E"};
        //A B C D E
        //A B D E
        String[] new_arr = new String[arr.length-1];
        for(int i=0;i<2;i++){
    
    
            new_arr[i]=arr[i];
        }

El bucle for se reemplaza por

        System.arraycopy(arr,0,new_arr,0,2);

Expansión de matriz
gramática:

数据类型[] 标识符 = Arrays.copyof(原数组,新数组的长度);

Ejemplo:

import java.util.Arrays;
public class study {
    
    
    public static void main(String[] args) {
    
    
        String[] arr = {
    
    "A","B","C","D","E"};
        //A B C D E
        //A B C D E F
        String[] new_arr = Arrays.copyOf(arr,arr.length+1);
    }
}

Práctica de dos arreglos

tipo de matriz

Los elementos de la matriz se ordenan de menor a mayor o de mayor a menor. Dividido en orden ascendente y orden descendente

Ordenamiento de burbuja:

  • Cada vez que se recorre la matriz, se puede obtener un valor máximo (valor máximo, valor mínimo) de los elementos de la matriz
  • Al atravesar la matriz cada vez, compare el tamaño de dos elementos adyacentes en la matriz e intercambie posiciones de acuerdo con los requisitos de la disposición.

Caso:
Organice la secuencia 10,70,55,80,25,60 en orden descendente

public class study {
    
    
    public static void main(String[] args) {
    
    
        int[] arr = {
    
    10,70,55,80,25,60};
        for(int i=0;i<arr.length;i++){
    
    
            for(int j=0;j<arr.length-i-1;j++){
    
    
                if(arr[j]<arr[j+1]){
    
    
                    int temp = arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        for(int j=0;j<arr.length;j++){
    
    
            System.out.println(arr[j]);
        }
    }
}

Operaciones de clasificación para herramientas:
Sintaxis:

        Arrays.sort(数组名);//将数组中的元素进行升序排列
        Arrays.toString(数组名)//将数组中的元素组装成一个字符串

Nota:

Los caracteres se pueden ordenar, ordenados según el orden del diccionario (abcdefg...)

import java.util.Arrays;

public class study {
    
    
    public static void main(String[] args) {
    
    
        String[] names = {
    
    "zhangsan","zhangsi","lisi","lisan",
        "lisiabc","lisib"};
        Arrays.sort(names);
        System.out.println(Arrays.toString(names));
    }
}

[lisan, lisi, lisiabc, lisib, zhangsan, zhangsi]

búsqueda binaria

También conocida como media búsqueda, como sugiere el nombre, se dividirá en dos intervalos desde el medio cada vez, y el elemento del medio se usará para comparar el tamaño del elemento que se buscará para determinar el intervalo en el que se encuentra el elemento de destino. localizado, y el rango se reducirá a su vez para determinar el elemento

La búsqueda binaria solo funciona en matrices ordenadas

Caso:
encuentre rápidamente la posición del elemento 60 de la secuencia 95, 93, 87, 86, 79, 72, 60, 53

public class study {
    
    
    public static void main(String[] args) {
    
    
        int[] numbers = {
    
    95,93,87,86,79,72,60,53};
        int target = 60;
        int start =0;
        int end = numbers.length -1;
        while(start<end){
    
    
            int mid = (start+end)/2;
            if(numbers[mid]>target)
            {
    
    
                start = mid;
            }else if(numbers[mid]<target){
    
    
                end = mid;
            }else{
    
    
                System.out.println(mid);
                break;
            }
        }
    }
} 

Matriz bidimensional

Una matriz es esencialmente unidimensional y una matriz bidimensional se refiere a agregar una matriz unidimensional a una matriz unidimensional. Matriz tridimensional, matriz de cuatro dimensiones, etc.

inserte la descripción de la imagen aquí
Definición de una matriz bidimensional:

数据类型[][] 数组名 = new 数据类型[数组的长度][数组的长度]

Por ejemplo: defina una matriz bidimensional con una longitud de 5, cada espacio solo puede almacenar matrices dobles de cualquier longitud,
y 2 también se puede dejar en blanco, lo que significa que puede almacenar... matrices de cualquier longitud

public class study {
    
    
    public static void main(String[] args) {
    
    
        double[][] as = new double[5][];
        as[0] = new double[]{
    
    12,66};
        as[1] = new double[]{
    
    17,91};
        as[2] = new double[]{
    
    15,84};
        as[3] = new double[]{
    
    14,67};
        as[4] = new double[]{
    
    19,86};
    }
}

Caso 1:
Grabe 5 piezas de información musical (incluido el nombre, el cantante, el año y el mes de publicación) desde la consola y almacene la información en una matriz

import java.util.Scanner;

public class study {
    
    
    public static void main(String[] args) {
    
    
        String[][] music_a = new String[5][3];
        Scanner sc = new Scanner(System.in);
        for (int i=0;i<music_a.length;i++){
    
    
            System.out.println("请输入名称:");
            String name = sc.next();
            System.out.println("请输入歌手:");
            String singer = sc.next();
            System.out.println("请输入出版年月:");
            String date = sc.next();
            music_a[i] = new String[]{
    
    name,singer,date};
        }
    }
}

Caso 2:
Hay 3 clases en el primer grado de cierta escuela, con 10 estudiantes en la primera clase, 8 estudiantes en la segunda clase y 7 estudiantes en la tercera clase, ahora se requiere ingresar los grados y edades de los alumnos de estas 3 clases desde la consola y calcula la nota media y la edad media de cada clase.

import java.util.Scanner;

public class study {
    
    
    public static void main(String[] args) {
    
    
        double[][][] stu_cal = new double[3][][];
        stu_cal[0] = new double[10][2];
        stu_cal[1] = new double[8][2];
        stu_cal[2] = new double[7][2];
        Scanner sc = new Scanner(System.in);
        //录入数据
        for(int i=0;i<stu_cal.length;i++){
    
    
            double[][] ne_cal = stu_cal[i];
            for(int j=0;j<stu_cal[i].length;j++){
    
    
                System.out.println("请输入年龄:");
                int age = sc.nextInt();
                System.out.println("请输入成绩:");
                double score = sc.nextDouble();
                ne_cal[j] = new double[]{
    
    age,score};
            }
        }
        //查看数据,并计算平均值
        for(int i=0;i<stu_cal.length;i++){
    
    
            double tolage = 0,tolscore = 0;
            double[][] ne_cal = stu_cal[i];
            for(int j=0;j<ne_cal.length;j++){
    
    
                tolage += ne_cal[j][0];
                tolscore += ne_cal[j][1];
            }
            System.out.println("第"+(i+1)+"个班的平均年龄为"+(tolage/ne_cal.length));
            System.out.println("第"+(i+1)+"个班的平均成绩为"+(tolscore/ne_cal.length));

        }
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_72138633/article/details/131293336
Recomendado
Clasificación