[英]how find the shortest distance between two numbers in a random list without sorting the list. my code is given below , i need another FAST way
import random
L = [random.randrange(1, 100**7) for i in range(100*100)]
#it creates a random list
for x in L:
min = L[0]
for y in L:
if x != y and abs(x-y) < min:
min = abs(x-y)
**#it basically cheeks every element with every one and update the min value id new one is found**
print(min)
沒有排序的更快的方法嗎? 有人建議它可以使用哈希表來完成,但我無法與之相關,所以請幫助我解決這個問題與哈希表的邏輯和聯系
數字可以根據其二進制(或其他)表示存儲在嵌套列表中。 我們使用固定數字(對於本例 3)。 例如 2 將表示為010
然后我們放入一個元素
numbers[0][1][0]
只有數字 2 的樹將是:
[
[None, [True, None]], None
]
如果我們添加數字 3 (011):
[
[None, [True, True]], None
]
添加數字 1 (001):
[
[[None, True], [True, True]], None
]
所有列表都有 2 個元素,並根據需要創建。 未使用的元素被設置為“無”
我們實際上不需要輸入數字,因為所有信息都在索引中。 所以我們只用True
表示數字 2 在樹中。
現在要在樹中找到與其他數字更接近的數字,只需進行二分搜索即可。
現在將最小距離與存儲的最小距離進行比較,如果需要更新存儲的最小距離並將新數字存儲在樹中。
我認為這是 O(N * logN)。 日志來自二進制存儲和搜索。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.