2012-10-25 111 views
0

我有這樣怎麼樣的數據結構樹在這種情況下

A 100 200 
A 120 220 
B 140 250 

另一個文件是這樣的

A 130 210 
A 133 215 
B 180 270 

然後,我必須從第一個文件的每一行比作一個文件來實現每行第二個文件並查找哪些行有交叉座標

輸出將是這樣的

A 100 200 A 130 210 
A 100 200 A 133 215 
A 100 200 A 180 270 

它就是這樣。

在我的代碼中,它是這樣的代碼,我從第一個文件中得到第一行,並與第二個文件的所有行進行比較。

所以我想知道如何實現一個像數據結構這樣的樹來完成這個任務,這樣複雜度就是日誌規模。

+0

交叉座標是什麼意思? – pogo

回答

3

你不需要樹形數據結構。如果您的文件按照第一個座標排序,則可以在線性時間內輕鬆完成。只需爲每個保存當前相關行的文件保留一個緩衝區,並且您只需將兩個文件的緩衝區同步。重點是,與其他文件的給定行的交集相關的行將始終彼此相鄰,因此,您知道一旦放棄了一行,就不必再檢查它了(因爲文件是排序)。

+0

你能解釋一下如何將文件加載到緩衝區並從那裏進行比較? - 感謝 –

+0

@ dissw.geek9緩衝區可以簡單地是一個行數組,您可以從文件中讀取行並添加到數組的末尾,而您總是從數組的開始處放棄。這與隊列或FIFO數據結構相似。 – Bitwise

+0

在perl中將文件加載到緩衝區的命令是什麼? –