關於演算法的一些想法 (轉)

worldblog發表於2007-12-09
關於演算法的一些想法 (轉)[@more@]

關於演算法的一些想法

演算法是的靈魂。不可想象,沒有演算法的會是一個高水平的程式。窗體的形狀、大小涉及到演算法;自身以及與其它控制元件的諸多關係需要計算;字串的查詢、擷取和替換更離不開它了……總之,從小到一個按鈕的安放位置,大到……(哪裡呀?我不知道),無不與演算法息息相關。
演算法或是很簡單,或是很複雜。凡事從簡單做起,這是捷徑吧。本文將從最簡單的演算法說明一下學習演算法從哪開始。
有時簡單的事也會讓我們做成很複雜。比如:計算a的b次方吧,有人這樣處理:
Dim a As Single, Total As Single, b As Integer
a = Text1.Text: b = Text2.Text: Total = 1
Do While b <> 0
Total = Total * a
b = b - 1
L
Text3.Text = Total
甚至這樣:
Private Sub Command1_Click()
Dim a As Single, Total As Single
Dim b As Integer, n As Integer

a = Text1.Text
Total = Text1.Text
b = Text2.Text

Case b
Case 0
Total = 1
Case Is < 0
MsgBox "資料", vbOKOnly, "出錯"
Text3.Text = ""
Exit Sub
Case Else
For n = 1 To b - 1
Total = Total * a
Next
End Select
Text3.Text = Total
End Sub

其實,如若知道VB中有一個專門計算此類問題的運算子“^”,則會簡單可靠得多。試看:
Dim a As Double, b As Integer, c As Double
a = Text1.Text: b = Text2.Text
c = a ^ b
Text3.Text = c
再比如,VB程式設計樂園最近有一篇關於翻轉字串的文章,討論如何利用遞迴原理編制一個翻轉字元的,演算法很精密,非常有意思(推薦認真研究一下):
Function reversestring(revstr As String) As String
Dim doreverse As Long
reversestring = ""
For doreverse = Len(revstr) To 1 Step -1
reversestring = reversestring & Mid$(revstr, doreverse, 1)
Next
End Function

不過如果我們用VB的內部函式StrReverse則更快更方便:
Text2.Text = StrReverse(Text1.Text)
看了這上面幾個例子,你得出什麼結論?哈,要學演算法,首先得學一學VB的運算子和內部函式!吃透這些東西總沒錯,免得日後辛辛苦苦弄了個演算法,回頭一看,哇噻,VB自身早就有了!當然了,自己搞些演算法不會沒有好處的,至少可以鍛鍊鍛鍊嘛。只是在當今什麼都飛速發展的年代,如果不是為了練習的需要,最好不要走太多的彎路。我說錯了什麼的話,敬請斧正! 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990111/,如需轉載,請註明出處,否則將追究法律責任。

相關文章