這是一個典型的發現矩陣中的局部最大值(只有一個)。在二維數組上進行二進制搜索以找到一個局部最大值?這個算法有什麼問題?
我的算法是:
- 選擇在矩陣中心的數量。
- 檢查數字是否爲峯值。如果是,返回。
如果不是,請檢查左側和右側的數字。如果其中一個比我們當前的數字大,選擇矩陣的一半。如果兩者都較大,我們可以選擇一半。
用數字重複上下。這將使我們有矩陣的一個象限繼續檢查。
由於這是對於具有anxn矩陣二進制搜索N^2層的元件,它應該採取O(的log(n^2))= O(2 *的log(n))= O(的log(n ))
我很確定這是不正確的,但我的錯誤在哪裏?
您是否不確定複雜性或算法?也許你應該看看這個 - http://www.geeksforgeeks.org/find-peak-element-2d-array/ –
要應用二進制搜索的先決條件之一是數據被排序...第一全部是你的二維矩陣是按某種順序排序的? – shole