常用vb演算法
❶ 索引排序vb演算法原理
快速從一個大數據集中找出某個欄位等於確定值的記錄。
vb內部排序7大演算法:1、冒泡排序2、直接選擇排序(StraightSelectSort)(BubbleSort)3、直接插入排序(StraightInsertionSort)4、希爾排序(ShellSort)5、快速排序(QuickSort)6、歸並排序(MergeSort)7、堆排序(HeapSort)。
索引是一種利用某種規則的數據結構與實際數據的關系加快數據查找的功能;索引數據節點中有著實際文件的位置,因為索引是根據特定的規則和演算法構建的,在查找的時候遵循索引的規則可以快速查找到對應數據的節點,從而達到快速查找數據的效果;其實宏觀來說索引其實是一種概念而不是具體的某項技術,只是我們在某個技術中運用得比較廣泛和鮮明(比如說資料庫)漸漸的有了特定領域的標簽,其實在生活中索引的使用無處不在,比如說:書本里的目錄;讀書時的座位號,考試編號都有類似索引的功能。
❷ VB演算法問題,一個堆數字中湊出指定數字
數據20-30個,這個高效與低效,運行時間應該差不了多少吧!
我給個簡單的演算法:
1,將這些數據讀入一個數組a()
2,對數組內的數據進行升序排序
3,依次從數組中取一個數與其他數進行求和
1)先算兩個數之和100的。從a(0)開始,當a(i)>50時,即可跳出循環,開始進行三個數之和是100的計算
2)當a(i)>34時,跳出循環,進行四個數之和是100的計算
3)當a(i)>25時,跳出循環,進行五個數之和是100的計算
依次類推
❸ VB 緇勫悎綆楁硶
Dim str(6), str1(15), str2(500), str3(20) As String
Dim i, j, k, m, n, sc, st(6), num(15) As Integer
Dim sn As Boolean
For i = 1 To 6
str(i) = CStr(i)
Next
'綆楁硶
'6涓鏁板瓧緇勫悎涓嶅悓鐨勪袱浣嶆暟
m = 1
For i = 1 To 6
For j = 1 To 6
If j > i Then
str1(m) = str(i) + str(j) '12,...16,23,...26,34,35,36,45,46,56 鍏15涓
m = m + 1
End If
Next
Next
'15涓鏁頒腑鎶3涓錛孋15(3)錛屾湁455縐嶇粍鍚
m = 1
For i = 1 To 15 - 2
For j = i + 1 To 15 - 1
For k = j + 1 To 15
str2(m) = str1(i) + str1(j) + str1(k) '121314,121315,...454656
m = m + 1
Next
Next
Next
'浠庣粍鍚堜腑閫夋嫨 1涓鏁板瓧浠呭嚭鐜1嬈 鐨勬暟
n = 1
For i = 1 To m - 1
sn = False
For j = 1 To 6 '鍒ゆ柇鏁板瓧
st(j) = 1 '鏁板瓧浣嶇疆鏆傚瓨
st(j) = InStr(1, str2(i), j) '鏁板瓧浣嶇疆
sc = st(j) '鏁板瓧浣嶇疆鏆傚瓨
For k = 2 To 6 '鍒ゆ柇浣嶇疆
st(j) = InStr(k, str2(i), j) '鏁板瓧浣嶇疆
If st(j) > sc Then
sn = True
End If
Next
Next
If sn = False Then
str3(n) = str2(i)
n = n + 1
End If
Next
'鏄劇ず緇撴灉
For i = 1 To n - 1
Text1.Text = Text1.Text + Mid(str3(i), 1, 2) + " " + Mid(str3(i), 3, 2) + " " + _
Mid(str3(i), 5, 2) + " " + Chr(13) + Chr(10) //涓鍏15涓
Next
❹ VB階乘的演算法
求階乘的兩種演算法
方法一(計數循環)
使用For語句。
Function Factorial(n As Integer) As Long
On Error GoTo Hander
Dim i As Long
Factorial = 1
For i = n To 1 Step -1
Factorial = Factorial * i
Next i
Exit Function
Hander:
MsgBox "數值過大!", vbExclamation, "Error"
Resume Next
End Function
方法二(遞歸)
簡單地說,遞歸就是一個過程調用過程本身。
思路為:n! = n * (n-1)!
Function Factorial(n As Integer) As Long
On Error Goto Hander
If n > 0 Then
Factorial = n * Factorial(n - 1)
Else
Factorial = 1
End If
Exit Sub
Hander:
Msgbox "數值過大!",vbExclamation,"Error"
Resume Next
End Function
例如,當 n=5 時,求 Factorial(5) 的值變為 5 * Factorial(4)。而 Factorial(4) 又可變為 4 * Factorial(3) ......,Factorial(2)又可變為 2 * Factorial(1),這時 Factorial(1) = 1 已知,遞歸調用停止,其執行結果為 5 * 4 * 3 * 2 * 1,即 5! 。
過程中還是用了錯誤陷阱(On Error...),以防數值過大發生溢出錯誤。
❺ VB涓璁捐$畻娉曪紝鍒ゆ柇鏌愪竴涓鏁版槸涓嶆槸鍥炴枃鏁幫紙鐢ㄦ枃瀛楀彊榪板氨鍙浠ヤ簡錛
2縐嶆柟娉,
1,鏄浣跨敤VB鑷甯︾殑鍑芥暟StrReverse , 涓涓鏁板瓧,琚緲昏繃鏉ヤ互鍚,榪樺拰鍘熸暟瀛楃浉鍚,灝卞彲浠ュ垽鏂鏄鍥炴枃鏁頒簡
2.浣跨敤寰鐜,姣忔¢兘2絝鍙栨暟瀛,閮界浉鍚,灝卞彲浠ュ垽鏂涓哄洖鏂囨暟, 褰撴湁涓嶅悓鏃,璺沖嚭寰鐜,涓嶆槸鍥炴枃鏁
❻ vb 緙栫▼ 瀵瑰凡鐭ュ瓨鍦ㄥ湪鏁扮粍涓鐨6涓鏁,鍒嗗埆閲囩敤閫夋嫨娉曞啋娉℃硶瀹炵幇浠庡皬鍒板ぇ鐨勬帓搴忋
1銆佸啋娉℃硶錛堥掑烇級 綆楁硶鎬濇兂錛(灝嗙浉閭諱袱涓鏁版瘮杈冿紝澶х殑璋冨埌鍚庡ご) 1錛夋湁n+1涓鏁幫紙瀛樻斁鍦ㄦ暟緇刟(n)涓錛夛紝絎涓瓚熷皢姣忕浉閭諱袱涓鏁版瘮杈冿紝澶х殑璋冨埌鍚庡ご錛岀粡n嬈′袱涓ょ浉閭繪瘮杈冨悗錛屾渶澶х殑鏁板凡鈥滄矇搴曗濓紝鏀懼湪鏈鍚庝竴涓浣嶇疆錛屽皬鏁頒笂鍗団滄誕璧封濓紱 2錛夌浜岃稛瀵逛綑涓嬬殑n涓鏁幫紙鏈澶х殑鏁板凡鈥滄矇搴曗濓級鎸変笂娉曟瘮杈冿紝緇弉-1嬈′袱涓ょ浉閭繪瘮杈冨悗寰楁″ぇ鐨勬暟錛 3錛変緷嬈$被鎺錛宯+1涓鏁板叡榪涜宯瓚熸瘮杈冦
For i=0 To n - 1
For j = 0 To n-1-i
If a(j) > a(j+1) Then
temp=a(j)
a(j)=a(j+1)
a(j+1)=temp
End if
Next j
Next i鈥樹竴姝ヤ竴姝ュ皢澶х殑鏁板瓧娌夊埌搴曢儴
2銆侀夋嫨娉曟濇兂錛 1錛夊規湁n+1涓鏁扮殑搴忓垪錛堝瓨鏀懼湪鏁扮粍a(n)涓錛夛紝浠庝腑閫夊嚭鏈灝忥紙鍗囧簭錛夋垨鏈澶э紙闄嶅簭錛夌殑鏁幫紝涓庣1涓鏁頒氦鎹浣嶇疆錛 2錛夐櫎絎1 涓鏁板栵紝鍏朵綑n涓鏁頒腑閫夋渶灝忔垨鏈澶х殑鏁幫紝涓庣2涓鏁頒氦鎹浣嶇疆錛 3錛変緷嬈$被鎺錛岄夋嫨浜唍嬈″悗錛岃繖涓鏁板垪宸叉寜鍗囧簭鎺掑垪銆
渚嬶細For i = 0 To n - 1
p = i
For j = i + 1 To n
If a(p) > a(j) Then
p = j
Next j
temp = a(i)
a(i) = a(p)
a(p) = temp
Next i
綆楁硶寮勬竻妤氭ラや簡錛屾牴鎹閫昏緫灝卞彲浠ュ啓鍑烘潵浜哵_^錛屾湜閲囩撼(鈯檕鈯)鍝