PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   高手請教VB6程式,兩個字串比較,程式碼如何作執行速度才會快 (https://www.pcdvd.com.tw/showthread.php?t=858377)

影 子 2009-06-25 11:01 AM

高手請教VB6程式,兩個字串比較,程式碼如何作執行速度才會快
 
假設我有兩個字串分別叫text1,text2
text1的字串ABDEFGTDEFGHJK...
text2的字串ABCEFDTDEFGHJK...
如果以text1為主
可以發現text2的字串與text1字串不一樣
分別是第三個字母及第六個字母
請問要如何把兩個字串作比較
並將第三個及字母與第六個及字母顯示出來
如何作速度才會快呢?
當然啦!
如果要一個字,一個字的比對
要比對的資料少
當然是差不多時間
但是當資料多時
時間就會差很多了
麻煩一下,謝謝

Sad2009 2009-06-25 11:54 AM

引用:
作者影 子
假設我有兩個字串分別叫text1,text2
text1的字串ABDEFGTDEFGHJK...
text2的字串ABCEFDTDEFGHJK...
如果以text1為主
可以發現text2的字串與text1字串不一樣
分別是第三個字母及第六個字母
請問要如何把兩個字串作比較
並將第三個及字母與第六個及字母顯示出來
如何作速度才會快呢?
當然啦!
如果要一個字,一個字的比對
要比對的資料少
當然是差不多時間
但是當資料多時
時間就會差很多了
麻煩一下,謝謝


並將第三個及字母與第六個及字母顯示出來!!

這表示你要得到的結果不是一各數值,而是ㄧ各類似二維陣列包含位置與字母.
我認為這個答案應該還是要用迴圈去寫.

資料量夠大又在乎速度的話,用c去寫dll吧!!

elase 2009-06-25 03:12 PM

字串比對都是呼叫函數做了..
如果資料量很大又很在乎速度..
那就是把字串切成幾份..
每一份用執行緒去跑..
在多核心的CPU有可能會變快..

影 子 2009-06-25 05:30 PM

引用:
作者elase
字串比對都是呼叫函數做了..
如果資料量很大又很在乎速度..
那就是把字串切成幾份..
每一份用執行緒去跑..
在多核心的CPU有可能會變快..

沒錯
小弟就是想用切的
現在的問題
就是要怎麼切
請問一下
有沒有什麼方式
怎麼切的比較好
謝謝

ivantw 2009-06-25 05:36 PM

RtlMoveMemory string -> byte() + array 比對
VB6就甭提多執行緒了。

e   2009-06-25 06:00 PM

每個人寫程式有自己的習慣,風格與思維架構,
建議樓主先提出你的寫法,再讓大家集思廣益,看如何改善?

kctsai0821 2009-06-25 06:07 PM

引用:
作者影 子
沒錯
小弟就是想用切的
現在的問題
就是要怎麼切
請問一下
有沒有什麼方式
怎麼切的比較好
謝謝


改 shell sort ?

songmong12 2009-06-25 06:30 PM

引用:
作者影 子
沒錯
小弟就是想用切的
現在的問題
就是要怎麼切
請問一下
有沒有什麼方式
怎麼切的比較好
謝謝


丟固定位元到陣列裡面,針對兩個陣列下去比對....然後標記

這只是想法.....作法當然是.....自己想

這一篇可以請大家看看

程式人員的面試心得及基本原則

通常在這個時候......會有很多人會上來問程式問題的
因為.......學期末了嘛!


我會對這時候還在有著想要在網路上問作業的學生們

如果學的不好,就再修一次吧

如果不想學,就不要再修了

elase 2009-06-25 06:45 PM

引用:
作者影 子
沒錯
小弟就是想用切的
現在的問題
就是要怎麼切
請問一下
有沒有什麼方式
怎麼切的比較好
謝謝

就一段一段切..一段多大要測試..
一開始一段可以先切大塊一點..
引用:
作者ivantw
RtlMoveMemory string -> byte() + array 比對
VB6就甭提多執行緒了。

很中肯

Adsmt 2009-06-25 07:13 PM

引用:
作者影 子
假設我有兩個字串分別叫text1,text2
text1的字串ABDEFGTDEFGHJK...
text2的字串ABCEFDTDEFGHJK...
如果以text1為主
可以發現text2的字串與text1字串不一樣
分別是第三個字母及第六個字母
請問要如何把兩個字串作比較
並將第三個及字母與第六個及字母顯示出來
如何作速度才會快呢?
當然啦!
如果要一個字,一個字的比對
要比對的資料少
當然是差不多時間
但是當資料多時
時間就會差很多了
麻煩一下,謝謝

你舉的例子看不出你的需求到什麼地步,如果字串都這麼理想的話,那一個一個去對就好了。

text1[0], text2[0]
text1[1], text2[1]
text1[2], text2[2]
...

如果是更複雜的情形,比較 abcccdfe, bajdcccaadef 的相似度,那就複雜許多,可以去 google "edit distance"


所有的時間均為GMT +8。 現在的時間是12:55 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2026。