我正在尋找一個數據結構(或結構),可以讓我保持一個有序的整數列表,沒有重複索引和值相同的整數範圍。快速隨機訪問,搜索,插入和刪除的高效數據結構
我需要四個主要的業務是高效的,在重要性的粗糙順序:
- ,取值爲從給定的指標
- 找到一個給定值
- 的插入在一個值的索引給定的索引
- 一個給定的索引
在刪除的值使用在O(1)的陣列我有1個,但圖2是O(N)和插入和刪除很昂貴(我相信O(N))。
鏈接列表有O(1)插入和刪除(一旦你有節點),但1和2是O(N),從而否定增益。
我試着保留兩個數組a [index] = value和b [value] = index,將1和2變成O(1),但將3和4變成更昂貴的操作。
有更好的數據結構嗎?
您使用哪種語言? – 2009-05-20 21:36:04
應該不是很重要,但它是C++ – Leonel 2009-05-21 03:48:11
它確實很重要;並非所有的語言都提供相同的數據結構。例如,這個特定問題可以通過C Judy數組或C#CPTrie非常有效地解決。 (或者,當然,Ayman建議的某種平衡二叉樹。) – Qwertie 2011-04-11 19:55:35