【如果有一個任務,有100個文件和一個詞典,詞典中包含了這100個文件中的所有單詞,然後統計每個詞出現的文件總數,即只要這個詞語在這個文件出出現一次,就加1,同一個文件中出現多次,算1次處理。】我們傳統的思維是,拿著這個詞典,去一個個的文檔中找,這個文檔中出現了,就加1。這
樣做有一個最大的弊端,如果文件總和是500MB,那麼運行這個程序需要11天(也許比11天多,一個500MB的文件中的詞語有幾百萬個)。幾百萬的詞
典,一個個的詞語去找,那就是要找幾百萬,要知道在計算機上遍歷一遍500MB的文件,需要幾秒的時間。這個代價非常大。

第二種實現方法:

遍歷每個文件,只要統計出,每個文件中出現的詞語就可以。首先,遍歷文件中的每一個詞語,然後在詞典後面寫上出現的文件的名稱。重複出現的就不用寫。這個很簡單。我們只需要遍歷一個500MB的文件,每個詞語,我們再到詞典中查一下,計算機遍歷一個幾百萬的詞典,也就是不到幾MB的大小,只需要很短的時間。

上述兩種方法,第一種我程序實現了一下,至少需要11天,第二種,不到2分鐘就跑完了程序。

所以從不同的方向查找,效率也是不一樣的。
推薦閱讀:
相关文章