堆不支持高效的隨機訪問(即通過索引查找),也不支持在不移除元素的情況下獲取頂部k個元素(這不是所期望的)。
我的答案是這樣的:
數據庫將是這個最佳的選擇,因爲,有一個正確的表結構和索引,所有需要的操作,可以有效地進行。
所以我認爲這是理解數據結構(與內存存儲相關,而不是持久存儲)的理論問題。
看來多個數據結構是要走的路:
一)有效的檢索和數據的更新,需要爲在交易時間每秒或微秒庫存數據的變化。
一張地圖對這個地圖很有意義。散列圖或樹形圖允許快速查找。
二)如何證明這是目前的趨勢股票(如在送股數量正在銷售最活躍的某一天不活躍,高利潤和虧損)?
幾乎任何已排序的數據結構在這裏似乎都有意義(上面的映射具有指向正確節點的指針或指向同一節點)。一個用於活動,另一個用於獲利。
我可能會去排序(雙)鏈表。獲得第一個或最後n個項目所需的時間很短。既然你有一個通過地圖指向元素的指針,只要地圖查找加上需要重新排序的項目的移動次數(如果有的話)就會進行更新。如果一個項目一次移動很多索引,鏈接列表將而不是是一個很好的選擇(在這種情況下,我可能會去一個二進制搜索樹)。
c)如何持久地存儲所有的事務數據?
我明白這個問題 - 如果數據庫的連接丟失或數據庫在任何時候發生故障,您如何確保沒有數據損壞?如果不是這樣,我會要求改寫。
幾乎任何數據庫課程都應該涵蓋這一點。
據我所知 - 它與創建另一條記錄,更新此記錄有關,並且只有在完全更新後才設置指向此記錄的實際指針。在此之前,您可能還必須設置一個指向舊記錄的指針,以便在設置指針後但刪除之前發生某些情況時,檢查它是否已被刪除。
另一種選擇是在啓動事務時添加到活動事務表並從事務完成時刪除(也存儲所有必需的詳細信息以回滾或恢復事務)。因此,每當一切都恢復正常時,您可以檢查該表並回滾或恢復任何尚未完成的交易。
聽起來不像你做得很好。 – duffymo