通常考慮一種排序方法產品線性排序產品(如「1,7,8,13,109 ...」),其中消費O(N)
進行查詢。線性結構是最好的分類生產嗎?
爲什麼不能在排序非線性順序,消費O(logN)
或通過迭代或牛頓法等找到元素?製造這樣的高階排序結構是否昂貴?
簡而言之,對排序結果進行排序可以通過尋找ax^2 + bx + c = 0
的根來訪問嗎? (相比之下,通常它會找到ax + c = 0
的根。)例如,我們有x1 = 1, x2 = 2
作爲二次方程的根,並插入以下xi(s)
。然後可以使用更智能的方式進行查詢。
我想困難可以通過這些方面會遇到:數據
預測可能比較硬。因此我們不能構建一個通用公式來很好地描述以下數字(可能是散列值)。
由於第一個難度,數字出一定範圍可以發散。由Google繪製的示例:the graph.從[-1,3]中導出的值非常大,以及執行原始公式時難度的快速增加。
這實際上相當於散列,它創建一個包含值的表。生產規則是一個公式。
由於算法本身的複雜性,執行「更智能」的查詢可能會很昂貴。
你是否建議需要線性時間來查找排序數組中的元素?如果是這樣,那是一個錯誤的假設。 – jerry
@jerry我認爲在線性有序數組中時間固定爲O(N),不是嗎? – ankJM173
找到元素的時間?您可以使用[二進制搜索](http://en.wikipedia.org/wiki/Binary_search)在'O(log n)'時間內找到它。 – jerry