查詢指定範圍的資料使用什麼樣的演算法

時間 2021-06-02 14:37:17

1樓:

首先。。要完成這個操作只需要簡單的平衡樹就行了,手寫乙個要不了幾分鐘。。你不介意的話可以用pb_ds,但是我很懷疑這玩意能不能處理好千萬級別的操作。

如果你想要紅黑樹的實現,可以在搜尋的時候用紅黑樹+size域。不過紅黑樹不是特別好找,你搜競賽用的比較多的treap,splay,sbt什麼的肯定一抓一大把,至於維護嘛,size域維護在update寫清楚了,各種樹之間的差異只是rotate的時機不大一樣而已。

順便,如果要並行的話應該skip list更合適一些,這個可以參考redis的實現。

至少千萬左右的資料塞進記憶體問題還不大。除非你的記憶體實在有限。

2樓:

不知道你說的頻繁變動具體指什麼。如果是不斷有新資料到來,找出第10到第14位的資料

用個最大堆就好了,堆大小為14。超出堆裡最大值的資料直接扔掉,否則扔掉最大值新元素入堆

如果是經常有修改,splay tree或者treap可以達到和紅黑樹類似的效果,稍慢但寫起來難度不可同日而語。

3樓:

如果需要動態更新資料集,且支援不同曲線的查詢,再考慮排序樹吧。

以你的題目描述,陣列排序直接輸出不就完事了?

而且這東西有開源的實現,而且很好找,只需要在 google 用英文關鍵字搜尋

超出自己能力範圍的努力是什麼樣的?

柒拾貳的小時光 首先我覺得這個能力範圍很難被界定,當你在做一件事情的時候,如果沒有經過學習的話,我想無論做什麼,都是超過自己能力範圍的,舉例來說,你沒有學習過寫字,當你拿起筆,在紙上寫字時,只能叫做亂塗亂畫。而且還存在乙個潛能的問題。還有就是努力,怎麼樣才算努力麼,我覺得取決於你努力的程度跟方法。比...

alluxio的資料分布演算法是什麼樣的?

範斌 Alluxio比較有意思的一點是,讀或者寫資料都可能導致資料進入Alluxio當中,並觸發資料分布策略 資料可以在使用者寫的時候進入Alluxio系統。具體說來,是從客戶端寫入Alluxio worker。在這種情況下,可以通過指定屬性alluxio.user.file.write.locat...

使用 PCIe NVMe 的 SSD 是什麼樣的體驗?

凡性的提醒 手持900P 480GB 之前用760p 256GB 開啟軟體微軟的UAC要等三四秒才出來 可能是久了沒重灌系統 後來買了900P,拿來當傳家寶用 快是真的快,真秒開軟體 壽命也巨長 固態硬碟的毒徹底解了。上圖 自行車換本田的體驗提公升,和本田換保時捷的體驗提公升。機械硬碟換固態是前者,...