我正在探索bisectPython 中的模塊。該模塊的整個目的對我來說很清楚,我現在知道如何使用它。但是檔案中的性能注釋說明了這一點:
二分法對于搜索值范圍很有效。對于定位特定值,字典的性能更高。
“搜索值的范圍”是什么意思?在bisect有bisect_left()和bisect_right(),這兩者的接受單一值找到指數。對檔案的任何解釋?謝謝。
uj5u.com熱心網友回復:
Python 字典是散列的,因此提供O(1)搜索/插入/洗掉時間復雜度,而二分搜索是對數的。
當您搜索特定值時,查找字典比二分搜索性能更高。如果您還在尋找圍繞特定值的范圍,則二分搜索更有意義。例如,如果您想要與搜索詞最接近的可能值。或者,如果您想知道在您要查找的元素的位置之前已經有多少個元素。或者您正在查找的 2 個特定元素之間有多少元素。散列字典當然不能這樣做。如您所見,在二分查找中,所有元素都是相關的彼此之間的總排序(但它是為該特定型別定義的)。排序串列的這一特性使二分搜索能夠作用于范圍。在散列字典中,元素彼此無關,除非它們的散列完全相同。
uj5u.com熱心網友回復:
我認為這意味著在 range 內找到一個值更有效[a, b]。如果您需要找到等于c它的值,則需要在串列中進行搜索。但是,如果使用字典,則無需搜索即可在 O(1) 時間內找到它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/374299.html
