PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
影 子
*停權中*
 
影 子的大頭照
 

加入日期: Aug 2004
文章: 317
高手請教VB6程式,兩個字串比較,程式碼如何作執行速度才會快

假設我有兩個字串分別叫text1,text2
text1的字串ABDEFGTDEFGHJK...
text2的字串ABCEFDTDEFGHJK...
如果以text1為主
可以發現text2的字串與text1字串不一樣
分別是第三個字母及第六個字母
請問要如何把兩個字串作比較
並將第三個及字母與第六個及字母顯示出來
如何作速度才會快呢?
當然啦!
如果要一個字,一個字的比對
要比對的資料少
當然是差不多時間
但是當資料多時
時間就會差很多了
麻煩一下,謝謝
     
      
舊 2009-06-25, 11:01 AM #1
回應時引用此文章
影 子離線中  
Sad2009
*停權中*
 

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


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

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

資料量夠大又在乎速度的話,用c去寫dll吧!!
 
舊 2009-06-25, 11:54 AM #2
回應時引用此文章
Sad2009離線中  
elase
*停權中*
 

加入日期: Dec 2006
文章: 89
字串比對都是呼叫函數做了..
如果資料量很大又很在乎速度..
那就是把字串切成幾份..
每一份用執行緒去跑..
在多核心的CPU有可能會變快..
舊 2009-06-25, 03:12 PM #3
回應時引用此文章
elase離線中  
影 子
*停權中*
 
影 子的大頭照
 

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

沒錯
小弟就是想用切的
現在的問題
就是要怎麼切
請問一下
有沒有什麼方式
怎麼切的比較好
謝謝
舊 2009-06-25, 05:30 PM #4
回應時引用此文章
影 子離線中  
ivantw
Junior Member
 
ivantw的大頭照
 

加入日期: May 2005
您的住址: Autobahn, Deutschland
文章: 743
RtlMoveMemory string -> byte() + array 比對
VB6就甭提多執行緒了。
舊 2009-06-25, 05:36 PM #5
回應時引用此文章
ivantw離線中  
e  
*停權中*
 

加入日期: Jan 2008
您的住址: Ixtlan(伊斯特蘭)
文章: 14
每個人寫程式有自己的習慣,風格與思維架構,
建議樓主先提出你的寫法,再讓大家集思廣益,看如何改善?
舊 2009-06-25, 06:00 PM #6
回應時引用此文章
e  離線中  
kctsai0821
*停權中*
 

加入日期: Apr 2008
文章: 2
引用:
作者影 子
沒錯
小弟就是想用切的
現在的問題
就是要怎麼切
請問一下
有沒有什麼方式
怎麼切的比較好
謝謝


改 shell sort ?
舊 2009-06-25, 06:07 PM #7
回應時引用此文章
kctsai0821離線中  
songmong12
Major Member
 
songmong12的大頭照
 

加入日期: Oct 2004
您的住址: 高雄的大醫院附近
文章: 216
引用:
作者影 子
沒錯
小弟就是想用切的
現在的問題
就是要怎麼切
請問一下
有沒有什麼方式
怎麼切的比較好
謝謝


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

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

這一篇可以請大家看看

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

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


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

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

如果不想學,就不要再修了
舊 2009-06-25, 06:30 PM #8
回應時引用此文章
songmong12離線中  
elase
*停權中*
 

加入日期: Dec 2006
文章: 89
引用:
作者影 子
沒錯
小弟就是想用切的
現在的問題
就是要怎麼切
請問一下
有沒有什麼方式
怎麼切的比較好
謝謝

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

很中肯
舊 2009-06-25, 06:45 PM #9
回應時引用此文章
elase離線中  
Adsmt
Golden Member
 
Adsmt的大頭照
 

加入日期: Feb 2004
您的住址: 從來處來
文章: 2,766
引用:
作者影 子
假設我有兩個字串分別叫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"
舊 2009-06-25, 07:13 PM #10
回應時引用此文章
Adsmt離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



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


vBulletin Version 3.0.1
powered_by_vbulletin 2026。