Самый эффективный способ поиска в отсортированной матрице?

У меня есть задание написать алгоритм (не на каком-то конкретном языке, просто псевдокод), который получает матрицу [размер: M x N], которая сортируется таким образом, что все его строки и все столбцы сортируются индивидуально, и находит определенное значение в этой матрице. Мне нужно написать наиболее эффективный по времени алгоритм, который я могу придумать.

Матрица выглядит примерно так:

1  3  5
4  6  8
7  9 10

Моя идея - начать с первой строки и последнего столбца и просто проверить значение, если оно больше, спуститься вниз и если это ' s меньше, чем идти влево, и продолжайте делать это до тех пор, пока значение не будет найдено или пока индексы не выйдут за границы (в случае, если значение не существует). Этот алгоритм работает с линейной сложностью O (m + n). Мне сказали, что это можно сделать с логарифмической сложностью. Является ли это возможным? и если да, то как?

8
задан Bob 9 November 2010 в 21:13
поделиться