有關Sorting |
尚未結案
|
left
一般會員 發表:8 回覆:10 積分:3 註冊:2004-01-16 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
left 您好:
引言: 假設現在有100個xxx.txt檔 而且已經排序好了 請問一下 要怎麼把他merge成一個 整個排好序的檔案? 我的限制是 memory太小 無法把檔案load到memory排序 thanks不是很了解您所謂的memory太小是什麼情況?還有是不是每個.txt檔都太大了? 假設上述情情成立的話,那麼您的計算結果恐怕也要分若干個檔案來儲存。 我個人的建議是: 既然您已將所有的資料排序好並存在各個檔案中,因此或許您就幫要merge的結果,先細分範圍(不好意思並不精確知道資料的形式希望這個說法不太離譜),比方說將值為1-10的結果分別自所有.txt檔中讀出,並重新插入排序,之後結果存1to10.dat中;依序重排所有10-20的資料,存於10to20.dat,依此類推。 最後再重組上述檔案,即可獲致merge的結果。 個人想法,提供參考! |
left
一般會員 發表:8 回覆:10 積分:3 註冊:2004-01-16 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
引言: hi~~ richtop 謝謝你的回答 我的問題就你所述的依樣 的確檔案是很大想做排序 所以才先拆開來想再作一次insert sort 不過您的方法應該是達不到排序的功能 "比方說將值為1-10的結果分別自所有.txt檔中讀出, 並重新插入排序,之後結果存1to10.dat中; 依序重排所有10-20的資料,存於10to20.dat,依此類推。" However,merge之後並不是排好序的資料依照您問題的描述,我覺得應該可以才對。唯一擔心的是,取值的範圍該如何分段(除非所有的值是呈均勻分布),以免造成某一範圍的資料太多,讓您有可能仍無法處理。 我再說一下我的意思,您參考看看: 1to10.dat :存的是自所有.txt檔中讀出,值介於 1到10之間的所有資料。 10to20.dat:存的是自所有.txt檔中讀出,值介於10到20之間的所有資料。 20to30.dat:存的是自所有.txt檔中讀出,值介於20到30之間的所有資料。 ..... 依此類推。 接著依序把所有檔案的資料合在一起, 1to10.dat 10to20.dat 20to30.dat ... => result.dat 或者必要時只將您要的範圍的檔案合在一起, 例如:20到40, 20to30.dat 30to40.dat => result.dat 因在1to10.dat檔案的資料已經排序好了,且不可能大於10to20.dat檔案中的任何資料,所以合併後的 1to10.dat 10to20.dat => result.dat 其內容應該就是:所有值介於1到20之間,且已經排好序的資料了。 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### |
left
一般會員 發表:8 回覆:10 積分:3 註冊:2004-01-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |