La solución es O(N)
y no hay necesidad de realizar ningún cálculo, aunque ayuda a comprender la forma de la curva.
Las respuestas anteriores están haciendo lo más intuitivo y resolver la ecuación para encontrar el mínimo o máximo y luego dividir la lista.
Hay una ventaja en el cálculo de la primera derivada, pero no es necesario hacerlo, ni necesitamos encontrar el punto máximo o mínimo en este momento.
Simplemente sepa que podría moverse en una dirección y luego retroceder en la otra dirección, pero nunca cambiará de dirección más de una vez.
Vamos a comenzar en cada extremo e iterar a través de ambos lados hasta que nos fusionamos en algún lugar en el medio. Antes de hacer cualquier otra cosa, debemos verificar la dirección en cada extremo, lo cual haremos simplemente comparando los dos elementos finales. Entonces vemos si un extremo se mueve hacia arriba y el otro hacia abajo.
Si tenemos N
elementos Supongamos que disponemos de datos X[0]
y X[N-1]
así calcular f(X[0])
y f(X[N-1])
y f(X[1])
y f(X[N-2])
. Si f(X[0]) < f(X[1])
y f(X[N-1]) > f(X[N-2])
entonces en realidad todos nuestros datos están a un lado del máximo/mínimo y por lo tanto ya están clasificados. Lo mismo si las comparaciones son en la otra dirección.(Una dirección puede requerir un reverso).
De lo contrario, simplemente realice la combinación desde ambos extremos, así f(X[0])
y f(X[N-1])
son máximos o mínimos de sus subvaciamientos (lo sabemos por las comparaciones anteriores) y cree la lista combinada de la dirección que corresponda.
Aplicando a sus datos:
-1 0 1 2 3 4
A = -1, B = 2, C = -1`
f = [ -4, -1, 0, -1, -4, -9 ]
-4 < -1
y -9 < -4
así que hacer cruzar el punto y tenemos mínimos en cada extremo.
-9 is lower than -4
-4 and -4 are equal so push both
-1 and -1 are equal so push both
0 remains.
our sequence is [-9, -4, -4, -1, -1, 0 ]
Su método es 'n log n'. – jason
ordenado en O (logN) tiempo ?? No se puede hacer, debe ser el tiempo O (N * LogN) ... Se ha demostrado matemáticamente que no se pueden ordenar las colecciones de números aleatorios en menos de O (NLogN) –
Se esperaba una solución O (N). – harishhkamat