我是新來的。作爲一名研究生,我現在已經對算法進行了頭腦風暴。我感謝任何可以延伸的關於下面問題的幫助。我已經搜索了足夠的,我找不到解決這個問題的任何解決方案。分而治之算法(應用二進制搜索?!)
我們有一個無限長的排序不同數字的數組。前n個數字是大於0但小於1的分數。所有其餘元素都是「1」,而您沒有給出n的值。您需要開發一種算法來檢查用戶給定分數F是否出現在該數組中。作爲n的函數分析算法的時間複雜度。 (n = 8的示例,其中1從數組的第8個位置開始)
我的方法: 我在猜測解決此問題的最佳方法是使用二分搜索。每次我們都可以將數組的大小減半,最後到達要找到的分數。讓我們假設陣列中有m個元素,包括1的元素。小數元素的數量是n。 對整個數組執行二分搜索的時間複雜度爲O(log(m))。因爲我被要求用n來表示時間複雜度,所以m = n + k(假設陣列中1的數量是k) 所以這個問題的時間複雜度是O(log(n + k)) 。
請拋開你的想法。謝謝
「我們有一個無限長的排序不同數字的數組。」停在那兒。現在離開計算機科學部門,去隔壁的數學系。 – 2015-02-08 15:52:54
@MikeNakis爲什麼?一些計算機科學算法需要假定非綁定值。 – ElderBug 2015-02-08 15:54:18
你不能有一個無限長度的數組。你可能會說到無盡的物品流,但不是無限的陣列。當然,您不能在流上執行二分搜索,因爲您需要知道項目的總數,以便可以計算中間值等等。 – 2015-02-08 15:57:46