¿Es esta una función de clasificación de burbujas válida? Si es así, ¿entonces cómo?

No, este no es un tipo de burbuja. Sí, es un algoritmo de clasificación y es un tipo de selección.
Ordenamiento de burbuja:
En la clasificación de burbujas, cada número consecutivo se compara para encontrar el número más grande o el más pequeño y se mueven al último o al primero según la necesidad y el código escrito. p.ej:
Entrada: 3 5 1 4 7 6
Paso 1: 3 1 5 4 7 6
Paso 2: 3 1 4 5 7 6
Paso 3: 3 1 4 5 6 7
Paso 4: 1 3 4 5 6 7
Entonces, en este ejemplo comparamos los elementos consecutivos y al hacerlo finalmente movemos el elemento más grande al último. En la segunda iteración, volvemos desde el principio hasta el segundo elemento más grande y lo colocamos en su lugar correcto.

  void sort_it (int a [], int n)
 {
 int i, j, temp;
 para (i = 0; i <n; i ++)
 {
 para (j = 0; j  a [j + 1])
 {
 temp = a [j];
 a [j] = a [j + 1];
 a [j + 1] = temp;
 }
 }
 }
 }

Selección de selección:
El orden de selección selecciona el elemento más grande o más pequeño entre todos los elementos y lo coloca en el lugar adecuado. En resumen, selecciona un lugar adecuado para un elemento en cada iteración:
Entrada: 3 5 1 4 7 6
Paso 1: 1 5 3 4 7 6
Paso 2: 1 3 5 4 7 6
Paso 3: 1 3 4 5 7 6
Paso 4: 1 3 4 5 6 7

Este no es un tipo de burbuja … este es un tipo de selección.

Aquí se explica cómo: tiene dos bucles anidados uno en el otro. Deje que el bucle externo se denote con L1 y el interno se denote con L2.

Tengamos una matriz {8, 1, 2, 4}

Entonces, inicialmente, i = 0 y j = 0;

L1 no permite que i cambie hasta que j haya alcanzado una longitud de matriz que es 4. Por lo tanto, la secuencia de operaciones es:

  1. i = 0 y j = 0 (a [0] no es mayor que a [0])
  2. i = 0 y j = 1 (a [0] es mayor que a [1], por lo que el intercambio se realiza entre a [0] y a [1] … Esta matriz de tiempo se ve como {1, 8, 2, 4})
  3. i = 0 y j = 2 (Esta vez, tome la matriz {1,8,2,4} que se procesó en el último paso y luego pruebe. a [0] es 1 y a [2] es 2 … a [ 0] no es mayor que a [2] y, por lo tanto, no se realiza ningún intercambio).
  4. i = 0 y j = 3 (a [0] no es mayor que a [3])

Después de este conjunto de eventos, tenga en cuenta que la matriz ahora se parece a {1, 8, 2, 4}. Y la matriz externa ha cambiado el valor de i a 1. Esto significa que ahora el elemento 0 nunca se tocará y, por lo tanto, se debe ordenar. Lleve esta iteración más allá y verá que después de la próxima iteración la matriz se verá como {1,2,8,4}. Ahora analiza.

Después de cada iteración, el elemento más a la izquierda se ordena. Si hubiera sido un tipo de burbuja, esto habría significado que el elemento más ligero tiene una burbuja en la parte superior. Pero hay una invariante en el tipo de burbuja: que cada vez que se hacen comparaciones en la matriz, se hace entre las posiciones i e i + 1 y no cualquier otro conjunto de posiciones. Claramente, 3 y 4 contrarrestan esta regla.

La selección de selección, por otro lado, selecciona el elemento más ligero de la matriz y luego lo coloca en el lugar “más correcto” de la matriz. Esto es claramente lo que está haciendo su algoritmo. Niroj ha dado una excelente forma de entender el tipo de selección. Mira su respuesta también.

PD: He hecho una serie de videos para responder solo a esa pregunta. Este es mi canal de youtube. (Infinito raíz)

ORDENAMIENTO DE BURBUJA:

CÓMO INEFICIENTE ES EL ORDENAMIENTO DE BURBUJAS: