[問題] 範圍搜尋比對

看板AndroidDev作者 (dreak)時間12年前 (2013/07/29 18:09), 編輯推噓3(303)
留言6則, 3人參與, 最新討論串1/1
我有個ArrayList裡存放所有的物件,然後螢幕上有個可以移動的VIEW 我想在使用者移動螢幕時顯示出在螢幕範圍內的物件(物件有x,y座標), 目前想到比較簡單的作法是透過for去比對ArrayList裡的每個物件 可是這樣即使使用者只移動一點點螢幕,仍然會從搜尋整個ArrayList, 感覺十分沒有效率,不知道版上的高手有沒有什麼推薦的演算法或好的建議? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 42.71.52.244

07/30 12:36, , 1F
你的物件數量有多少呢?
07/30 12:36, 1F

07/30 12:37, , 2F
如果只有幾百個,直接 O(n) 查找全部的物件就夠快了
07/30 12:37, 2F

07/31 00:57, , 3F
切n*n 個regions 用n*n個ArrayList來放
07/31 00:57, 3F

07/31 00:59, , 4F
只要搜尋有overlap regions 的Arraylist
07/31 00:59, 4F

07/31 01:04, , 5F
怕物件分布不平均 可以用k-d tree 不好寫就是了
07/31 01:04, 5F

07/31 23:38, , 6F
可能會到上千個物件
07/31 23:38, 6F
文章代碼(AID): #1HzZzO4I (AndroidDev)