[Archivo] Matemáticas puras, física, química, etc.: problemas de entrenamiento cerebral no relacionados con el comercio de ninguna manera - página 584
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
En una sola pasada:
Crear una copia vacía de un array del mismo tamaño, inicializarlo con dos.
Ir desde el principio de la matriz. Encuentro 1 - escribir en la copia desde el principio, encuentro 3 - escribir en la copia desde el final.
Además, ¡tienes que controlar a los tres punteros al mismo tiempo!
Te daré una pequeña tarea.
Por supuesto, es un hack, pero en las entrevistas de trabajo funciona como una apoteosis de conocimiento de ordenación de matrices ))
Por lo tanto, la tarea de clasificar
Hay una matriz de N celdas, en la que los unos, los dos y los tres están colocados en orden aleatorio.
Construye el mejor algoritmo de ordenación.
Cuenta en una pasada, rellena la matriz en la segunda pasada.
En una sola pasada:
Crear una copia vacía de un array del mismo tamaño, inicializarlo con dos.
Ir desde el principio de la matriz. Si se encuentra 1, se escribe en la copia desde el principio; si se encuentra 3, se escribe en la copia desde el final.
Sin copia (o dirá que rellenar la copia es una pasada aparte).
n=0, m=0
Empieza por el principio de la matriz. Si nos encontramos con 1 - lo cambiamos por el n-ésimo elemento del principio, no igual a 1 (por construcción siempre será 2), n++; si nos encontramos con 3 - lo cambiamos por el m-ésimo elemento del final, no igual a 3, m++, y si nos encontramos con 1, seguimos los pasos de la primera parte.
Sin copia (o dirá que rellenar la copia es una pasada aparte)
n=0, m=0
Vamos desde el principio de la matriz. Si nos encontramos con 1, lo cambiamos por el n-ésimo elemento del principio no igual a 1 (por construcción siempre será 2), n++; si nos encontramos con 3, lo cambiamos por el m-ésimo elemento del final no igual a 3, m++, y si nos encontramos con 1, procedemos como se describe en la primera parte.
Sin copia (o dirá que rellenar la copia es una pasada aparte)
n=0, m=0
Vamos desde el principio de la matriz. Si nos encontramos con 1, lo cambiamos por el n-ésimo elemento del principio no igual a 1 (por construcción siempre será 2), n++; si nos encontramos con 3, lo cambiamos por el m-ésimo elemento del final no igual a 3, m++, y si nos encontramos con 1, procedemos como se describe en la primera parte.
Es una buena manera de hacerlo.
Reducir el número de pasadas no siempre supone un aumento de la velocidad.
A+B=...
Sin copia (o dirá que rellenar la copia es una pasada aparte)
n=0, m=0
Vamos desde el principio de la matriz. Si nos encontramos con 1, lo cambiamos por el n-ésimo elemento del principio no igual a 1 (por construcción siempre será 2), n++; si nos encontramos con 3, lo cambiamos por el m-ésimo elemento del final no igual a 3, m++, y si nos encontramos con 1, procedemos como se describe en la primera parte.
Buena idea.