Étant donné un bitonic tableau et de l'élément x dans le tableau, trouver l'indice de x dans 2log(n) le temps

Tout d'abord, un bitonic tableau pour cette question est définie comme un tel que, pour tout indice K dans un tableau de longueur N0 < K < N - 1 et de 0 à K est monotone croissante de la séquence de nombres entiers, et K à N - 1 est une façon monotone décroissante de la séquence de nombres entiers.

Exemple: [1, 3, 4, 6, 9, 14, 11, 7, 2, -4, -9]. Il augmente de façon monotone de 1 à 14 ans, puis diminue à partir de 14 à -9.

Le précurseur de cette question est de résoudre dans 3log(n), qui est beaucoup plus facile. Une altération de la recherche binaire pour trouver l'index de max, puis deux binaires des recherches de 0 à K et K + 1 à N - 1, respectivement.

Je suppose que la solution dans 2log(n) vous demande de résoudre le problème sans trouver de l'index max. J'ai pensé recouvrent les binaires de recherche, mais au-delà, je ne suis pas sûr de savoir comment aller de l'avant.

Je pense que plausible route est de faire deux binaires de recherche, en supposant que le milieu de l'élément est le max. Puis, dans les deux binaires de recherches que nous inclure une contrainte de regarder dehors pour une certaine incohérence, qui, à un certain point l'une des deux moitiés ne sont pas monotone croissante/décroissante. Une fois trouvée, la recherche binaire qui fait flac chacun sur ce s'ajuste en conséquence. La question ici serait ce que pour regarder dehors pour.
Toutefois, si le milieu n'était pas le max, il est possible que les deux binaires recherches convergent vers un seul côté, ce qui signifie que l'on serait redondant. Dans ce cas, nous devons forcer l'un des binaires de recherche l'autre sens jusqu'à ce qu'il fonctionne de lui-même et ne se déplace pas vers l'autre en binaire de recherche. Je pense que ce serait la façon d'aller à ce sujet.
Comment fonctionne la recherche pour le max de travail à exactement log n sans facteur constant de toute façon?
flexaired.blogspot.com/2013/06/...

OriginalL'auteur David | 2013-10-15