Решение O(N)
, и нет необходимости выполнять какое-либо исчисление, хотя оно помогает понять форму кривой.
Ответы, приведенные выше, делают самую интуитивную вещь и решают уравнение, чтобы найти минимум или максимум, а затем разбивать список.
Существует преимущество при вычислении первой производной, но на самом деле нет необходимости на самом деле, и нам не нужно найти максимальную или минимальную точку в это время.
Просто знайте, что он может перемещаться в одном направлении, а затем назад в другом направлении, но никогда не будет меняться в направлении более одного раза.
Мы собираемся начать с каждого конца и перебирать с обеих сторон, пока мы не сместимся где-нибудь посередине. Прежде чем мы сделаем что-нибудь еще, нам нужно проверить направление на каждом конце, которое мы будем делать, просто сравнивая два конца конца. Поэтому мы видим, что один конец движется вверх, а другой - вниз.
Если у нас есть N
элементы, скажем, у нас есть данные X[0]
и X[N-1]
так рассчитать f(X[0])
и f(X[N-1])
и f(X[1])
и f(X[N-2])
. Если f(X[0]) < f(X[1])
и f(X[N-1]) > f(X[N-2])
, то на самом деле все наши данные являются одной из сторон максимума/минимума и, следовательно, уже отсортированы. То же самое, если сравнения находятся в другом направлении.(В одном направлении может потребоваться обратное).
В противном случае просто выполнить слияние с обоих концов, таким образом, f(X[0])
и f(X[N-1])
либо максимумы или минимумы их поддиапазонах (мы знаем из предыдущих сравнений) и создать объединенный список из любого является соответствующее направление.
Применяя к вашим данным:
-1 0 1 2 3 4
A = -1, B = 2, C = -1`
f = [ -4, -1, 0, -1, -4, -9 ]
-4 < -1
и -9 < -4
поэтому мы делаем пересечь точку, и мы имеем минимумы на каждом конце.
-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 ]
Ваш метод 'n log n'. – jason
Сортировка по времени O (logN) ?? Нет, это может быть O (N * LogN) time ... Математически доказано, что вы не можете сортировать коллекции случайных чисел меньше, чем O (NLogN) –
Он ожидал решения O (N). – harishhkamat