[問題] 關於Python的Set

看板C_and_CPP (C/C++)作者 (Ben)時間15年前 (2011/03/10 16:46), 編輯推噓3(304)
留言7則, 3人參與, 最新討論串1/1
大家好, 我最近在開發一個軟體, 裡面需要記錄大量的稀疏二維整數點座標, 坐標軸長度各約1000, 且需要重覆做約2~3萬(從空的座標開始重覆做), 而這個軟 體需要支援: 1.快速找尋下一個存在的整數點座標. 2.快速增加一個指定位置的整數點座標. 2.快速刪除一個指定位置的整數點座標 3.快速增加一段已指定位置與長度的連續整數點座標. 4.快速刪除一段已指定位置與長度的連續整數點座標. 目前我用C++實做了一個sparse matrix(用2-D link list做成的), 而最近想把資料結構改成Python內建的Dictionary+Set, 即把x座標當 Dictinary的Key, Dictionary的Value則是一組Set,Set裡面是該x座標下 存在的所有y座標. 比如現在有三個點(1,2) (1,5) (1,10) 那就會組成: {'1':{2,5,10}}. 1.Set是否是一種hash table, 故要搜尋一個點的time complexity是O(1)? 2.另外想請問大家有沒有推薦的資料結構(切合上述四點要求)? 平常都會來這個版逛逛看一些高手的文章, 但是我是第一次在這個版發文. 感謝大家給建議!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.5.201 ※ 編輯: bin90909 來自: 140.113.5.201 (03/10 16:57)

03/10 17:00, , 1F
它怎麼知道特定Dictionary裡有哪些Set? time complexity
03/10 17:00, 1F

03/10 17:01, , 2F
就看這裡.
03/10 17:01, 2F
※ 編輯: bin90909 來自: 140.113.5.201 (03/10 17:04)

03/10 17:05, , 3F
樓上你好, 那請問若指定點座標的tc是O(1)嗎?
03/10 17:05, 3F

03/10 17:07, , 4F
可以是O(1), 但要做table.
03/10 17:07, 4F

03/10 17:10, , 5F
建table的意思是? set本身是一種hash table嗎?
03/10 17:10, 5F

03/10 17:11, , 6F
還是意思是把所有點座標都個別記下來?
03/10 17:11, 6F

03/11 01:00, , 7F
node-based search最快就O(logN) 不可能O(1)
03/11 01:00, 7F
文章代碼(AID): #1DU8_djI (C_and_CPP)
文章代碼(AID): #1DU8_djI (C_and_CPP)