(Algoritmo) Complejidad de tiempo y clasificación de burbujas (Adjunto: Explicación sobre el uso de XOR^)

Tabla de contenido

operación constante

complejidad del tiempo

Ordenamiento de burbuja

XOR^


  • operación constante

Interpretación : si la operación no tiene nada que ver con la cantidad de datos de muestra, cada operación se completa en un tiempo fijo.

Por ejemplo : operaciones aritméticas comunes (+-*/...)

Operaciones comunes con bits (>>,|, &,^...)

Asignación, comparación, autoincremento y autosustracción, acierto directo por desplazamiento de dirección en la matriz, etc.

  • complejidad del tiempo

Interpretación : como indicador del número de operaciones de Changshu en el proceso del algoritmo , también es un estándar para juzgar la calidad de un algoritmo. Por lo general, se denota por (pronunciado O grande) O ().

De acuerdo con el algoritmo para resumir la expresión de su número constante de operaciones, solo se retiene el elemento de orden más alto ; no se requiere el coeficiente del elemento de orden más alto, y se deja f (N), y la complejidad del tiempo es O (f(N)).

(PD: al juzgar un algoritmo, primero mire el índice de complejidad del tiempo y luego analice el tiempo de ejecución real en diferentes muestras).

  • Ordenamiento de burbuja

Breve descripción: Una matriz desordenada, de izquierda a derecha, cada dos números adyacentes se comparan, y el número con un valor mayor se intercambia a la derecha para completar el arreglo ordenado. (Cada ronda de recorrido solo puede garantizar que el número más a la derecha sea el más grande) --- O(N²)

 Simule una matriz desordenada, compare cada dos, la fila superior son los elementos de la matriz y la fila inferior es su posición.

Primera vez: 0~N-1

La segunda vez: 0~N-2

......

Primero piense por usted mismo, luego mire la implementación del código

public tatic void BubbleSort(int[] arr){
   if(arr==null||arr.length<2){
       break;
       }
   for(int i=0;i<arr.length;i++){
       if(arr[i]>arr[i+1]){
           swap(arr,i,i+1);//交换位置
       }
    }
    
}
public static void swap(int[] arr,int i,int j){
arr[i] = arr[i]^arr[j];
arr[j] = arr[i]^arr[j];
arr[i] = arr[i]^arr[j];
}

Primero juzgue que la matriz existe y que su longitud es mayor que 2, y luego la ordenamos (para evitar problemas), necesitamos repetir N-1 veces, la posición del último dígito es N-1 y juzgar directamente la tamaño en él.

  • XOR^

Para explicar la función de intercambio escrita aquí, primero comprenda ^ (exclusivo o), que es una especie de operación de bits

p.ej:

1^0=1

1^1=0

0^0=0 igual a 0, diferente a 1

su naturaleza básica

(1) N^N=0; N^0=N Cualquier número XOR en sí mismo es 0, cualquier número XOR 0 es en sí mismo.

(2) La operación XOR se ajusta a las leyes asociativa y conmutativa.

(3) De los dos elementos anteriores a la derecha, se puede concluir que todos los elementos en una matriz se someten a XOR una vez, y el resultado sigue siendo el mismo sin importar en qué orden se encuentren en el medio.

Mire la función de intercambio anterior nuevamente

Suposición: a = A, b = B

a = a^b = A^B;

b = a ^ b = A ^ B ^ B = A ^ 0 = A;

a = a^b = A^B^A = B^0 = B;

Hasta ahora se han intercambiado los valores de a y b.

Supongo que te gusta

Origin blog.csdn.net/qq_48860282/article/details/123552680
Recomendado
Clasificación