我真的很想幫助解決以下問題。C語言中的二進制文件:使用fread函數和nlogn排序問題
我需要在兩個兩個二進制文件閱讀ñ整數(二進制格式),和(二進制格式再)來寫另一個輸出文件中的所有常見的整數O(nlogn)時間。
這裏是我想要做的草圖:
1 - 我知道,我不能%d
使用fscanf
,因爲這些都不是文本文件,但因爲我知道,在每個N個數文件,我想在運行一個「for」循環N次和
for (i=0; i<N; i++) {
fread(&int1, 4, 1, file1);
fread(&int2, 4, 1, file2);
arr1[i]=int1;
arr2[i]=int2;
}
凡arr1
,arr2
各自爲N大小的INT數組,這是正確的嗎?如果我知道有N個整數,每個整數用4位表示,那麼我會在文件末尾完成,是嗎?
2-我想使用qsort
排序每個數組與nlogn
步驟,但那麼我應該如何比較兩個仍然nlogn步驟?我沒有得到任何聰明的方式。
我可以幫你第二部分。 單獨對2個數組進行排序,然後使用合併排序中的合併過程將它們合併到O(n)時間內的一個排序數組中。 qsort(arr1), qsort(arr2), merge(arr1,arr2)。 ping我,如果你需要一些幫助的代碼。 – axiom 2012-07-18 19:17:36