Supongamos que la tabla lineal adopta una estructura de almacenamiento secuencial y que los valores de los elementos de la tabla son números enteros. Lea el Algoritmo f 30 y responda las siguientes preguntas
Primero puedes pensar en cómo empezar si es una persona la que hace esto.
La respuesta es muy sencilla,
1. Consigue un número,
2. Comprueba si este número se repite con el número que ya has visto. Si se repite... en caso contrario...
Evidentemente, cada uno de los dos pasos requiere un ciclo.
Es similar: hay varias bolas blancas marcadas con números en la secuencia. Mira estas bolas blancas en orden. Si hay un nuevo número en la bola, píntala de rojo. un número repetido, pinta la bola de rojo. Vuélvete verde. Por cierto, cada vez que compruebas un número nuevo, ¿necesitas compararlo con todas las bolas que ya has visto? No es necesario, simplemente compárelo con la bola roja.
El programa también realiza una operación de cobertura de cambio: cuando se encuentra una bola no repetida, si hay una bola verde en la secuencia, la primera bola verde de la secuencia se reemplaza con la bola actual y se marca en rojo. . Si no hay ninguna bola verde en la secuencia, la bola actual se pintará de rojo.
Esto asegura que la secuencia siempre mantendrá este orden:
Un número de bolas rojas, un número de bolas verdes y un número de bolas blancas.
A continuación, aclaremos el significado de cada variable:
i es la variable utilizada para atravesar la bola blanca. Dado que solo se atraviesa una vez, se puede interpretar como la posición de. la primera bola blanca de la secuencia.
k es la primera posición después de todas las bolas rojas. Si k=i, significa que no hay ninguna bola verde por el momento. De lo contrario, k apunta a la posición de la primera bola verde de la secuencia.
j es una variable utilizada para atravesar la bola roja. El rango de la bola roja es [0,k), por lo que el valor de j es [0,k]. no hay repetición.
¿Entiendes esto? Mire el código nuevamente. Por favor escriba sus propios comentarios.