精華區beta Programming 關於我們 聯絡資訊
==> PAUL.bbs@bbs.cs.nthu.edu.tw (不事修飾) 在 programming 版提到: : ※ 引述《Pro-V.bbs@bbs.ntu.edu.tw (與Subject GRE搏鬥)》之銘言: : > 在特定範圍內Ex 800 X600有一堆小方框(x,y,w,h), : > 方框有可能重疊,但絕對有不同處(四參數必定有一個不同) : > 給一個點,求出包含這個點的方框 : > 我現在的想法是 : > 先按x,y,w,h的大小sort 方框矩陣 : > search時再按x,y,w,h的方式找... : > 這樣應該是O(n)吧.... : > 有沒有人有其他建議勒?! : 你的 n 是什麼東西ㄚ? : sort是 O(nlog n)吧?! or 你的框框都是 integer : 那還得 depend on 你的 range吧!! : 你的問題定義的不夠清楚, 想 follow, 可是看得不太懂你的提目 排序就差不多等於搜尋了... if (x1,y1)-(x2,y2) ... and P(x,y) if x>=x1 xor x>=x2 and y>=y1 and y>=y2 then inside end if 若在矩形內, 可用 XOR, 必然且惟一... -- ______________________________________________________本版因有你們而壯大 T.L. Cheng 子璉 _______________________________________________________________________. 請各位來成大資研BBS BASIC 版坐坐, 也歡迎你討論 WinHelp 請支援成立 BASIC討論版及 News Group, 讓 BASIC有個家! 2-D 徐昇網分析 (含交集分析) http://feitsui.hyd.ncku.edu.tw/TLCheng/Thiessen/ -- Origin: 成大資工BBS站 (vlsi1.csie.ncku.edu.tw) From: 140.116.77.68 > -------------------------------------------------------------------------- < 發信人: "青衫" <cin@jstek.com.tw>, 看板: Programming 標 題: Re: 有誰能想出較快速的演算法??? 發信站: SEEDNet News Service (Tue Dec 15 19:20:00 1998) 轉信站: Ptt!news.ntu!spring!feeder.seed.net.tw!news.seed.net.tw!not-for-mail > : > 在特定範圍內Ex 800 X600有一堆小方框(x,y,w,h), > : > 方框有可能重疊,但絕對有不同處(四參數必定有一個不同) > : > 給一個點,求出包含這個點的方框 > : > 我現在的想法是 > : > 先按x,y,w,h的大小sort 方框矩陣 > : > search時再按x,y,w,h的方式找... > : > 這樣應該是O(n)吧.... > : > 有沒有人有其他建議勒?! > : 你的 n 是什麼東西ㄚ? > : sort是 O(nlog n)吧?! or 你的框框都是 integer > : 那還得 depend on 你的 range吧!! > : 你的問題定義的不夠清楚, 想 follow, 可是看得不太懂你的提目 > > 排序就差不多等於搜尋了... > if (x1,y1)-(x2,y2) ... and P(x,y) > > if x>=x1 xor x>=x2 and y>=y1 and y>=y2 then > inside > end if > > 若在矩形內, 可用 XOR, 必然且惟一... Sequential Search最差的情況本來就是O(n), 也不用排序了, 除非排序能加快search, 才有那個必要. 但我看不出能加快多少. 加快的方法應該也是有, 例如可先對x進行矩形排序, 在搜尋時, 對x作二分搜尋法或狠一點用索引法, 直接去除 一部份不必比較的矩形, 但最差的情形也是O(n). 若要再快, 則可以對4邊做4個排序, 用索引法分別比較 4次, 取剩餘區間最小的做Sequential Search, 不過這些Overhead可能便抵消所能加速的部份了... -- 青衫詩客 - 小邱.