[Java] Clasificación de burbujas de algoritmo básico de Java, clasificación de selección y búsqueda binaria

Tabla de contenido

Ordenamiento de burbuja:

Orden de selección:

Método de búsqueda binaria:


Ordenamiento de burbuja:

        La clasificación de burbujas es un algoritmo de clasificación relativamente simple y común en el campo de la informática. El principio del algoritmo es: acceder repetidamente a la columna de elementos que necesita ser ordenados, comparar dos elementos adyacentes a su vez, y si el orden es incorrecto de mayor a menor o de menor a mayor, se intercambian los dos datos . El origen del nombre de este algoritmo es que el elemento más pequeño "flota" lentamente hacia la parte superior de la secuencia (ascendente o descendente) a través del intercambio. Si las burbujas de dióxido de carbono en las bebidas carbonatadas finalmente suben a la parte superior, el nombre "clasificación de burbujas" .

Ordene la matriz de la siguiente manera:

Matriz: 6,5,4,2,3,1 (orden ascendente)

El primer viaje (i = 0): El                                                                                           segundo viaje (i = 1):

          Primera comparación: 5      6       4 2 3 1 Primera comparación: 4      5       2 3 1 6     

          Segunda comparación: 5 4      6       2 3 1 Segunda comparación: 4 2      5       3 1 6

          Tercera comparación: 5 4 2      6       3 1 Tercera comparación: 4 2 3       5       1 6

          Cuarta comparación: 5 4 2 3      6       1 Cuarta comparación: 4 2 3 1      5     6

          Quinta comparación: 5 4 2 3 1      6                     

El tercer viaje (i = 2): El                                                                                         cuarto viaje (i = 3):

           Primera comparación: 2        4       3 1 5 6 Primera comparación: 2      3        1 4 5 6

           Segunda comparación: 2 3        4      1 5 6 Segunda comparación: 2 1        3        4 5 6

           La tercera comparación: 2 3 1      4      5 6                              (La primera comparación, 2 <3, por lo que no es necesario intercambiar posiciones)

La quinta vez (i = 4):

          Primera comparación: 1      2        3 4 5 6 

       La comparación de la primera pasada, o más de 6 en cualquiera de un conjunto de números (matriz) debe ser grande, por lo que después de completar la primera comparación, 6 salta a la última vez, mientras que durante la segunda pasada de la comparación, desde la primera En la comparación de viajes, el número más grande (el número más pequeño) se ha movido al final, por lo que en el segundo viaje no es necesario comparar con el último número . Lo mismo ocurre en el último.

En la tercera pasada, no es necesario comparar con los dos últimos números.

En la cuarta pasada, no es necesario comparar con los últimos tres números.

En la quinta pasada, no es necesario comparar con los últimos cuatro números.

        En el proceso de movimiento anterior, se puede encontrar que el número de comparaciones "i" es la longitud del conjunto (matriz) -1, y el número de veces de cada comparación (5,4,3,2,1) "j" se puede usar: set (Matriz) Longitud: el número de pasadas -1. En cada comparación, comience desde el principio y compare el tamaño de los dos números. Si el número actual es mayor que el número siguiente, los dos números intercambian posiciones.

        el código se muestra a continuación:

   public static int[] bubbleMethod(int[] arr){
        //执行的趟数
        for (int i = 0; i < arr.length; i++) {
            //每趟比较的次数
            for (int j = 0; j < arr.length - 1 - i; j++) {
                //判断两个数的大小
                if (arr[j]>arr[j+1]){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        return arr;
    }

Orden de selección:

          Encontré una imagen animada para reflejarlo:

Matriz: 6,5,4,2,3,1 (orden ascendente) [Los números rojos representan: datos utilizados para comparar con los siguientes datos,      los números azules representan: datos a comparar ]

El primer viaje (i = 0): (el primer número se compara con el siguiente número) El                         segundo viaje (i = 1): (el segundo número se compara con el siguiente número)

          Primera comparación:     6       4 2 3 1 Primera comparación: 1          4       5 3 6    

          Segunda comparación: 4       5      6 2 3 1 Segunda comparación: 1          4      5       3 6   

          Tercera comparación: 2           5 6 3 1 Tercera comparación: 1      2     4 5          6   

          Cuarta comparación: 2        4 5      3       6 1 Cuarta comparación: 1      2      4 5 3      6   

          Quinta comparación: 1             4 5 3 6                    

El tercer viaje (i = 2): () El                                                                                          cuarto viaje (i = 3):

           Primera comparación: 1 2     4           3 6 Primera comparación: 1 2 3      4           6

           Segunda comparación: 1 2     3   4       5 6 Segunda comparación: 1 2 3      4       5      6   

           Tercera comparación: 1 2     3       5       4 6                              

La quinta vez (i = 4):

          Primera comparación: 1 2 3 4     5     6 

Primer viaje: Compare el primer número con todos los números siguientes . Si el primer número es mayor que los números siguientes, intercambie posiciones con los números siguientes y continúe comparando los números intercambiados.

Segundo paso: Después del primer ciclo, el número más pequeño se ha colocado en la primera posición , así que compare el segundo número con el siguiente número. Si el segundo número es mayor que el siguiente, se comparará con el siguiente número. Intercambiar posiciones, seguir comparando las intercambiadas, …………

Obtenga las reglas:

        Cada vez que se compara el elemento del índice i-ésimo, se compara con el elemento i + 1 ° y el elemento primero, y el valor de i no es mayor que la longitud de los datos (recopilación)

public static int[] bubbleMethod(int[] arr){
    for (int i = 0; i < arr.length; i++) {
        for (int j = i+1; j < arr.length; j++) {
           //判断两个数的大小
           if (arr[i]<arr[j]){
               int temp=arr[i];
               arr[i]=arr[j];
               arr[j]=temp;
           }
       }
    }
}

Método de búsqueda binaria:

      También se le llama algoritmo de búsqueda binaria para encontrar la posición de índice de un elemento.

Premisa aplicable:

  • La secuencia debe estar ordenada

  • No consideres la repetición de elementos

//定义方法完成二分查找
    public static int find(int[] arr, int a){
        //定义开始和结束
        int i = 0;
        int j = arr.length-1;
        //循环
        while(true){
            //判断
            if(i > j){
                //表示找不到
                return -1;
            }
            //中间值
            int mid = (i+j)/2;
            //比较
            if(arr[mid] == a){
                return mid;
            }else if(arr[mid] < a){
                i = mid + 1;
            }else{
                j = mid - 1;
            }
        }
    }

 

Supongo que te gusta

Origin blog.csdn.net/weixin_43267344/article/details/108018568
Recomendado
Clasificación