2011-01-26 28 views
0

我正在編寫一個類似於Python 2.6+程序的網絡調度,其中我有一個複雜的隊列要求:隊列應該存儲數據包,應該通過時間戳或O(1)中的數據包ID進行檢索,應該能夠檢索所有低於某個閾值的數據包,按優先級對數據包進行排序等。它應該以合理的複雜度插入和刪除。需要關於自定義數據結構與使用內存數據庫的建議?

現在我有兩個選擇:

  1. 結合一些數據結構和它們正確地同步,以實現自己的要求。
  2. 使用一些內存數據庫,以便我可以輕鬆執行各種操作。

有什麼建議嗎?

+0

排隊有多少物品,它們會多大? – 2011-01-26 09:30:58

+0

我實際上是在爲高質量的視頻聊天提供視頻內容。該隊列被用作緩衝區,並且可以顯着增長。然而,就目前使用字典的實現而言,我並沒有耗盡內存。 – sharjeel 2011-01-26 09:39:13

回答

0

數據庫只是一些索引和花哨的算法包裹在一個單一的數據結構 - 表。你對引擎蓋下發生的事情沒有太多的控制。

我想嘗試使用內置的Python數據結構。

0

一個Fibonacci Heap可能是有益的,因爲(從文章引述):

操作插入,找到最小,減小鍵,和合並(工會)在不斷的分期時間的工作。操作刪除並刪除O(log n)攤銷時間中的最小工作量。這意味着從一個空的數據結構開始,第一組中的操作序列和第二組中的操作序列將花費O(a + b log n)時間。在二項堆中,這樣的一系列操作將花費O((a + b)log(n))時間。因此,當b漸近地小於a時,Fibonacci堆比二項堆更好。

相關問題