技術討論區 > 程式討論版

請教如何改寫perl程式,以加快執行速度

頁: << < (3/3)

相殺:

一點淺見可以試試

把要比對的資料拆開比對例如[匯報][匯x]...[遊行][游x]....
先將第一個字的部分宣告成{"匯","游"....}陣列A
第一個字對應的部分宣告成{"彙","游"....}陣列B
第二個字的部分宣告成{"報","編","刊","行","興","學",...}陣列C
第一個迴路搜尋第二個字的旗標值(在該陣列內是第幾個元素)=x
第一個迴路找不到時不執行第二個迴路的搜尋
第二個迴路搜尋第一個字的旗標值(在該陣列內是第幾個元素)=y
然後在搜尋結果為真時
printf("%s%s",B[y],C[x]);

strcat(sa,B[y]);
strcat(sb,C[x]);
strcat(s,sa);
strcat(s,sb);

執行搜尋前必先將資料取出到記憶體內再執行而且不要在每筆比對都顯示
(搜尋成功才顯示)因為硬碟跟螢幕跑不快呀

stlee:

這個問題是不是要將大陸的簡體字網頁透過程式翻譯成繁體中文的阿
如果不是的話下面不用看了

如果是的話可以試試"查表法"
因為中文是以雙位元表示一個中文,且第一個位元是在ASCII的128-255之間的值
所以透過字元分析對照表格(需自行創建)索引到需要的結果
而且嚴格來說"查表法"並不是如二元搜尋的演算法則而是以資料表格索引對照的表格所以速度非常快,在本問題的資料量來說1秒內就能找出來了吧,詳細部分因為我並不確定問題本身用途為何所以不再多說,而且我看這個問題很久了所以也認真想了一個解決方案,不過目前只能翻到兩個字的句子(2維陣列)有興趣的話大家一起討論討論

TomUbuntu:

這隻程式應該有規律性的東西,把它找出來就是演算法了~~~~~針對這個演算法去加速就行了XD ;D ;D ;D ;D

頁: << < (3/3)

前往完整版本