關於演算法的一些想法

2021-08-29 13:15:58 字數 1699 閱讀 6565

關於演算法的一些想法

演算法是程式設計的靈魂。不可想象,沒有演算法的程式會是乙個高水平的程式。窗體的形狀、大小涉及到演算法;控制項自身以及與其它控制項的諸多關係需要計算;字串的查詢、擷取和替換更離不開它了……總之,從小到乙個按鈕的安放位置,大到……(**呀?我不知道),無不與演算法息息相關。

演算法或是很簡單,或是很複雜。凡事從簡單做起,這是捷徑吧。本文將從最簡單的演算法說明一下學習演算法從哪開始。

有時簡單的事也會讓我們做成很複雜。比如:計算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

loop

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

select case b

case 0

total = 1

case is 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自身早就有了!當然了,自己搞些演算法不會沒有好處的,至少可以鍛鍊鍛鍊嘛。只是在當今什麼都飛速發展的年代,如果不是為了練習的需要,最好不要走太多的彎路。我說錯了什麼的話,敬請斧正!

關於演算法的一些想法

關於演算法的一些想法 演算法是程式設計的靈魂。不可想象,沒有演算法的程式會是乙個高水平的程式。窗體的形狀 大小涉及到演算法 控制項自身以及與其它控制項的諸多關係需要計算 字串的查詢 擷取和替換更離不開它了 總之,從小到乙個按鈕的安放位置,大到 呀?我不知道 無不與演算法息息相關。演算法或是很簡單,或...

關於OCR,一些想法

ocr一般分為兩種 1,根據給定的字元特徵集合,提取未知字元的特徵進行匹配識別 典型例子 gocr 2,不知道字元特徵,但給出提取特徵的規則,通過機器學習training來獲取某個字符集的特徵集,對未知字元進行匹配識別。典型例子 tesseract 第一種方法簡單,在某些場合很高效,但比較侷限,字符...

關於tv app的一些想法

以前是做iptv機頂盒的,現在是做網際網路電視機頂盒的,在技術上的區別是不大的。通過這些年與電信,廣電打交道,現在對產品有了一些小想法。那麼在顯示上都是以web為主,用web來顯示epg內容,用osd來顯示狀態。但是隨著android的出現,現在大部分機頂盒或電視劇集廠家,都開始了智慧型之旅。乙個是...