数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: ysr

几个vb小程序

[复制链接]
 楼主| 发表于 2023-2-10 00:44 | 显示全部楼层
1 w=0
2 w=1
3 w=1
4 w=2
5 w=3
6 w=5
7 w=8
8 w=13
9 w=21
10 w=34
11 w=55
12 w=89
13 w=144
14 w=233
15 w=377
16 w=610
17 w=987
18 w=1597
19 w=2584
20 w=4181
21 w=6765
22 w=10946
23 w=17711
24 w=28657
25 w=46368
26 w=75025
27 w=121393
28 w=196418
29 w=317811
30 w=514229
31 w=832040
32 w=1346269
33 w=2178309
34 w=3524578
35 w=5702887
36 w=9227465
37 w=14930352
38 w=24157817
39 w=39088169
40 w=63245986
41 w=102334155
42 w=165580141
43 w=267914296
44 w=433494437
45 w=701408733
46 w=1134903170
47 w=1836311903
48 w=2971215073
49 w=4807526976
50 w=7778742049
51 w=12586269025
52 w=20365011074
53 w=32951280099
54 w=53316291173
55 w=86267571272
56 w=139583862445
57 w=225851433717
58 w=365435296162
59 w=591286729879
60 w=956722026041
61 w=1548008755920
62 w=2504730781961
63 w=4052739537881
64 w=6557470319842
65 w=10610209857723
66 w=17167680177565
67 w=27777890035288
68 w=44945570212853
69 w=72723460248141
70 w=117669030460994
71 w=190392490709135
72 w=308061521170129
73 w=498454011879264
74 w=806515533049393
75 w=1304969544928657
76 w=2111485077978050
77 w=3416454622906707
78 w=5527939700884757
79 w=8944394323791464
80 w=14472334024676221
81 w=23416728348467685
82 w=37889062373143906
83 w=61305790721611591
84 w=99194853094755497
85 w=160500643816367088
86 w=259695496911122585
87 w=420196140727489673
88 w=679891637638612258
89 w=1100087778366101931
90 w=1779979416004714189
91 w=2880067194370816120
92 w=4660046610375530309
93 w=7540113804746346429
94 w=12200160415121876738
95 w=19740274219868223167
96 w=31940434634990099905
97 w=51680708854858323072
98 w=83621143489848422977
99 w=135301852344706746049
100 w=218922995834555169026
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-10 00:51 | 显示全部楼层
/0/1/1/2/3/5/8/13/21/34
/55/89/144/233/377/610/987/1597/2584/4181
/6765/10946/17711/28657/46368/75025/121393/196418/317811/514229
/832040/1346269/2178309/3524578/5702887/9227465/14930352/24157817/39088169/63245986
/102334155/165580141/267914296/433494437/701408733/1134903170/1836311903/2971215073/4807526976/7778742049
/12586269025/20365011074/32951280099/53316291173/86267571272/139583862445/225851433717/365435296162/591286729879/956722026041
/1548008755920/2504730781961/4052739537881/6557470319842/10610209857723/17167680177565/27777890035288/44945570212853/72723460248141/117669030460994
/190392490709135/308061521170129/498454011879264/806515533049393/1304969544928657/2111485077978050/3416454622906707/5527939700884757/8944394323791464/14472334024676221
/23416728348467685/37889062373143906/61305790721611591/99194853094755497/160500643816367088/259695496911122585/420196140727489673/679891637638612258/1100087778366101931/1779979416004714189
/2880067194370816120/4660046610375530309/7540113804746346429/12200160415121876738/19740274219868223167/31940434634990099905/51680708854858323072/83621143489848422977/135301852344706746049/218922995834555169026
/354224848179261915075/573147844013817084101/927372692193078999176/1500520536206896083277/2427893228399975082453/3928413764606871165730/6356306993006846248183/10284720757613717413913/16641027750620563662096/26925748508234281076009
/43566776258854844738105/70492524767089125814114/114059301025943970552219/184551825793033096366333/298611126818977066918552/483162952612010163284885/781774079430987230203437/1264937032042997393488322/2046711111473984623691759/3311648143516982017180081
/5358359254990966640871840/8670007398507948658051921/14028366653498915298923761/22698374052006863956975682/36726740705505779255899443/59425114757512643212875125/96151855463018422468774568/155576970220531065681649693/251728825683549488150424261/407305795904080553832073954
/659034621587630041982498215/1066340417491710595814572169/1725375039079340637797070384/2791715456571051233611642553/4517090495650391871408712937/7308805952221443105020355490/11825896447871834976429068427/19134702400093278081449423917/30960598847965113057878492344/50095301248058391139327916261
/81055900096023504197206408605/131151201344081895336534324866/212207101440105399533740733471/343358302784187294870275058337/555565404224292694404015791808/898923707008479989274290850145/1454489111232772683678306641953/2353412818241252672952597492098/3807901929474025356630904134051/6161314747715278029583501626149
/9969216677189303386214405760200/16130531424904581415797907386349/26099748102093884802012313146549/42230279526998466217810220532898/68330027629092351019822533679447/110560307156090817237632754212345/178890334785183168257455287891792/289450641941273985495088042104137/468340976726457153752543329995929/757791618667731139247631372100066
/1226132595394188293000174702095995/1983924214061919432247806074196061/3210056809456107725247980776292056/5193981023518027157495786850488117/8404037832974134882743767626780173/13598018856492162040239554477268290/22002056689466296922983322104048463/35600075545958458963222876581316753/57602132235424755886206198685365216/93202207781383214849429075266681969
/150804340016807970735635273952047185/244006547798191185585064349218729154/394810887814999156320699623170776339/638817435613190341905763972389505493/1033628323428189498226463595560281832/1672445759041379840132227567949787325/2706074082469569338358691163510069157/4378519841510949178490918731459856482/7084593923980518516849609894969925639/11463113765491467695340528626429782121
/18547707689471986212190138521399707760/30010821454963453907530667147829489881/48558529144435440119720805669229197641/78569350599398894027251472817058687522/127127879743834334146972278486287885163/205697230343233228174223751303346572685/332825110087067562321196029789634457848/538522340430300790495419781092981030533/871347450517368352816615810882615488381/1409869790947669143312035591975596518914
/2281217241465037496128651402858212007295/3691087032412706639440686994833808526209/5972304273877744135569338397692020533504/9663391306290450775010025392525829059713/15635695580168194910579363790217849593217/25299086886458645685589389182743678652930/40934782466626840596168752972961528246147/66233869353085486281758142155705206899077/107168651819712326877926895128666735145224/173402521172797813159685037284371942044301
/280571172992510140037611932413038677189525/453973694165307953197296969697410619233826/734544867157818093234908902110449296423351/1188518561323126046432205871807859915657177/1923063428480944139667114773918309212080528/3111581989804070186099320645726169127737705/5034645418285014325766435419644478339818233/8146227408089084511865756065370647467555938/13180872826374098837632191485015125807374171/21327100234463183349497947550385773274930109
/34507973060837282187130139035400899082304280/55835073295300465536628086585786672357234389/90343046356137747723758225621187571439538669/146178119651438213260386312206974243796773058/236521166007575960984144537828161815236311727/382699285659014174244530850035136059033084785/619220451666590135228675387863297874269396512/1001919737325604309473206237898433933302481297/1621140188992194444701881625761731807571877809/2623059926317798754175087863660165740874359106
/4244200115309993198876969489421897548446236915/6867260041627791953052057353082063289320596021/11111460156937785151929026842503960837766832936/17978720198565577104981084195586024127087428957/29090180355503362256910111038089984964854261893/47068900554068939361891195233676009091941690850/76159080909572301618801306271765994056795952743/123227981463641240980692501505442003148737643593/199387062373213542599493807777207997205533596336/322615043836854783580186309282650000354271239929
/522002106210068326179680117059857997559804836265/844617150046923109759866426342507997914076076194/1366619256256991435939546543402365995473880912459/2211236406303914545699412969744873993387956988653/3577855662560905981638959513147239988861837901112/5789092068864820527338372482892113982249794889765/9366947731425726508977331996039353971111632790877/15156039800290547036315704478931467953361427680642/24522987531716273545293036474970821924473060471519/39679027332006820581608740953902289877834488152161
/64202014863723094126901777428873111802307548623680/103881042195729914708510518382775401680142036775841/168083057059453008835412295811648513482449585399521/271964099255182923543922814194423915162591622175362/440047156314635932379335110006072428645041207574883/712011255569818855923257924200496343807632829750245/1152058411884454788302593034206568772452674037325128/1864069667454273644225850958407065116260306867075373/3016128079338728432528443992613633888712980904400501/4880197746793002076754294951020699004973287771475874
/7896325826131730509282738943634332893686268675876375/12776523572924732586037033894655031898659556447352249/20672849399056463095319772838289364792345825123228624/33449372971981195681356806732944396691005381570580873/54122222371037658776676579571233761483351206693809497/87571595343018854458033386304178158174356588264390370/141693817714056513234709965875411919657707794958199867/229265413057075367692743352179590077832064383222590237/370959230771131880927453318055001997489772178180790104/600224643828207248620196670234592075321836561403380341
/971183874599339129547649988289594072811608739584170445/1571408518427546378167846658524186148133445300987550786/2542592393026885507715496646813780220945054040571721231/4114000911454431885883343305337966369078499341559272017/6656593304481317393598839952151746590023553382130993248/10770594215935749279482183257489712959102052723690265265/17427187520417066673081023209641459549125606105821258513/28197781736352815952563206467131172508227658829511523778/45624969256769882625644229676772632057353264935332782291/73822750993122698578207436143903804565580923764844306069
/119447720249892581203851665820676436622934188700177088360/193270471243015279782059101964580241188515112465021394429/312718191492907860985910767785256677811449301165198482789/505988662735923140767969869749836918999964413630219877218/818706854228831001753880637535093596811413714795418360007/1324695516964754142521850507284930515811378128425638237225/2143402371193585144275731144820024112622791843221056597232/3468097888158339286797581652104954628434169971646694834457/5611500259351924431073312796924978741056961814867751431689/9079598147510263717870894449029933369491131786514446266146
/14691098406862188148944207245954912110548093601382197697835/23770696554372451866815101694984845480039225387896643963981/38461794961234640015759308940939757590587318989278841661816/62232491515607091882574410635924603070626544377175485625797/100694286476841731898333719576864360661213863366454327287613/162926777992448823780908130212788963731840407743629812913410/263621064469290555679241849789653324393054271110084140201023/426547842461739379460149980002442288124894678853713953114433/690168906931029935139391829792095612517948949963798093315456/1116716749392769314599541809794537900642843628817512046429889
/1806885656323799249738933639586633513160792578781310139745345/2923602405716568564338475449381171413803636207598822186175234/4730488062040367814077409088967804926964428786380132325920579/7654090467756936378415884538348976340768064993978954512095813/12384578529797304192493293627316781267732493780359086838016392/20038668997554240570909178165665757608500558774338041350112205/32423247527351544763402471792982538876233052554697128188128597/52461916524905785334311649958648296484733611329035169538240802/84885164052257330097714121751630835360966663883732297726369399/137347080577163115432025771710279131845700275212767467264610201
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-10 00:52 | 显示全部楼层
'兔子数列程序递推程序
Private Sub Command1_Click()
Dim a, b, c
a = Val(Text1)
b = 1
B1 = 0
b2 = 1
b3 = 0
Do While b <= a
B1 = b2
If b Mod 10 = 0 Then
s1 = s1 & "/" & Trim(b3) & vbCrLf
Else
s1 = s1 & "/" & Trim(b3)
End If
b2 = b3
b3 = MPC1(Trim(B1), Trim(b2))


b = Val(b + 1)

Loop
Text2 = s1
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
End Sub

Public Function MPC1(D1 As String, D2 As String) As String 'jiafa
Dim x, y '两数长度

If Len(D1) >= Len(D2) Then
D4 = String(Len(D1) - Len(D2), "0") & D2
D3 = D1
Else
D4 = D2
D3 = String(Len(D2) - Len(D1), "0") & D1
End If
x = Len(D3): y = Len(D4)
Dim a() As Integer, B1() As Integer, C1() As Integer, E1() As Integer
ReDim a(1 To x)
ReDim B1(1 To y)
ReDim C1(1 To x)
ReDim E1(1 To x)
Dim i, j, C2, CJ, JW
For j = y To 1 Step -1 'D2
JW = 0 '进位清0
B1(j) = Mid$(D4, j, 1) '每位数
For i = x To 1 Step -1  'D1
   a(i) = Mid$(D3, i, 1) '每位数
   C1(i) = a(i) + B1(i) + JW '计算jia
   JW = C1(i) \ 10
   E1(i) = C1(i) Mod 10
  Next
  Next
  For r = 1 To x
  If JW = 0 Then
  MPC1 = MPC1 & E1(r)
  Else
  jc = jc & E1(r)
  MPC1 = JW & jc
  End If
  Next
  
End Function

回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-10 00:56 | 显示全部楼层
这个是VB程序,利用了大数加法可调用程序,可以算很大的数据,但是,速度太慢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-10 01:05 | 显示全部楼层
/0 /1 /1 /2 /3 /5 /8 /13 /21 /34
/55 /89 /144 /233 /377 /610 /987 /1597 /2584 /4181
/6765 /10946 /17711 /28657 /46368 /75025 /121393 /196418 /317811 /514229
/832040 /1346269 /2178309 /3524578 /5702887 /9227465 /14930352 /24157817 /39088169 /63245986
/102334155 /165580141 /267914296 /433494437 /701408733 /1134903170 /1836311903 /2971215073 /4807526976 /7778742049
/12586269025 /20365011074 /32951280099 /53316291173 /86267571272 /139583862445 /225851433717 /365435296162 /591286729879 /956722026041
/1548008755920 /2504730781961 /4052739537881 /6557470319842 /10610209857723 /17167680177565 /27777890035288 /44945570212853 /72723460248141 /117669030460994
/190392490709135 /308061521170129 /498454011879264 /806515533049393 /1304969544928657 /2111485077978050 /3416454622906707 /5527939700884757 /8944394323791464 /14472334024676221
/23416728348467685 /37889062373143906 /61305790721611591 /99194853094755497 /160500643816367088 /259695496911122585 /420196140727489673 /679891637638612258 /1100087778366101931 /1779979416004714189
/2880067194370816120 /4660046610375530309 /7540113804746346429 /12200160415121876738 /19740274219868223167 /31940434634990099905 /51680708854858323072 /83621143489848422977 /135301852344706746049 /218922995834555169026
/354224848179261915075 /573147844013817084101 /927372692193078999176 /1500520536206896083277 /2427893228399975082453 /3928413764606871165730 /6356306993006846248183 /10284720757613717413913 /16641027750620563662096 /26925748508234281076009
/43566776258854844738105 /70492524767089125814114 /114059301025943970552219 /184551825793033096366333 /298611126818977066918552 /483162952612010163284885 /781774079430987230203437 /1264937032042997393488322 /2046711111473984623691759 /3311648143516982017180081
/5358359254990966640871840 /8670007398507948658051921 /14028366653498915298923761 /22698374052006863956975682 /36726740705505779255899443 /59425114757512643212875125 /96151855463018422468774568 /155576970220531065681649693 /251728825683549488150424261 /407305795904080553832073954
/659034621587630041982498215 /1066340417491710595814572169 /1725375039079340637797070384 /2791715456571051233611642553 /4517090495650391871408712937 /7308805952221443105020355490 /11825896447871834976429068427 /19134702400093278081449423917 /30960598847965113057878492344 /50095301248058391139327916261
/81055900096023504197206408605 /131151201344081895336534324866 /212207101440105399533740733471 /343358302784187294870275058337 /555565404224292694404015791808 /898923707008479989274290850145 /1454489111232772683678306641953 /2353412818241252672952597492098 /3807901929474025356630904134051 /6161314747715278029583501626149
/9969216677189303386214405760200 /16130531424904581415797907386349 /26099748102093884802012313146549 /42230279526998466217810220532898 /68330027629092351019822533679447 /110560307156090817237632754212345 /178890334785183168257455287891792 /289450641941273985495088042104137 /468340976726457153752543329995929 /757791618667731139247631372100066
/1226132595394188293000174702095995 /1983924214061919432247806074196061 /3210056809456107725247980776292056 /5193981023518027157495786850488117 /8404037832974134882743767626780173 /13598018856492162040239554477268290 /22002056689466296922983322104048463 /35600075545958458963222876581316753 /57602132235424755886206198685365216 /93202207781383214849429075266681969
/150804340016807970735635273952047185 /244006547798191185585064349218729154 /394810887814999156320699623170776339 /638817435613190341905763972389505493 /1033628323428189498226463595560281832 /1672445759041379840132227567949787325 /2706074082469569338358691163510069157 /4378519841510949178490918731459856482 /7084593923980518516849609894969925639 /11463113765491467695340528626429782121
/18547707689471986212190138521399707760 /30010821454963453907530667147829489881 /48558529144435440119720805669229197641 /78569350599398894027251472817058687522 /127127879743834334146972278486287885163 /205697230343233228174223751303346572685 /332825110087067562321196029789634457848 /538522340430300790495419781092981030533 /871347450517368352816615810882615488381 /1409869790947669143312035591975596518914
/2281217241465037496128651402858212007295 /3691087032412706639440686994833808526209 /5972304273877744135569338397692020533504 /9663391306290450775010025392525829059713 /15635695580168194910579363790217849593217 /25299086886458645685589389182743678652930 /40934782466626840596168752972961528246147 /66233869353085486281758142155705206899077 /107168651819712326877926895128666735145224 /173402521172797813159685037284371942044301
/280571172992510140037611932413038677189525 /453973694165307953197296969697410619233826 /734544867157818093234908902110449296423351 /1188518561323126046432205871807859915657177 /1923063428480944139667114773918309212080528 /3111581989804070186099320645726169127737705 /5034645418285014325766435419644478339818233 /8146227408089084511865756065370647467555938 /13180872826374098837632191485015125807374171 /21327100234463183349497947550385773274930109
/34507973060837282187130139035400899082304280 /55835073295300465536628086585786672357234389 /90343046356137747723758225621187571439538669 /146178119651438213260386312206974243796773058 /236521166007575960984144537828161815236311727 /382699285659014174244530850035136059033084785 /619220451666590135228675387863297874269396512 /1001919737325604309473206237898433933302481297 /1621140188992194444701881625761731807571877809 /2623059926317798754175087863660165740874359106
/4244200115309993198876969489421897548446236915 /6867260041627791953052057353082063289320596021 /11111460156937785151929026842503960837766832936 /17978720198565577104981084195586024127087428957 /29090180355503362256910111038089984964854261893 /47068900554068939361891195233676009091941690850 /76159080909572301618801306271765994056795952743 /123227981463641240980692501505442003148737643593 /199387062373213542599493807777207997205533596336 /322615043836854783580186309282650000354271239929
/522002106210068326179680117059857997559804836265 /844617150046923109759866426342507997914076076194 /1366619256256991435939546543402365995473880912459 /2211236406303914545699412969744873993387956988653 /3577855662560905981638959513147239988861837901112 /5789092068864820527338372482892113982249794889765 /9366947731425726508977331996039353971111632790877 /15156039800290547036315704478931467953361427680642 /24522987531716273545293036474970821924473060471519 /39679027332006820581608740953902289877834488152161
/64202014863723094126901777428873111802307548623680 /103881042195729914708510518382775401680142036775841 /168083057059453008835412295811648513482449585399521 /271964099255182923543922814194423915162591622175362 /440047156314635932379335110006072428645041207574883 /712011255569818855923257924200496343807632829750245 /1152058411884454788302593034206568772452674037325128 /1864069667454273644225850958407065116260306867075373 /3016128079338728432528443992613633888712980904400501 /4880197746793002076754294951020699004973287771475874
/7896325826131730509282738943634332893686268675876375 /12776523572924732586037033894655031898659556447352249 /20672849399056463095319772838289364792345825123228624 /33449372971981195681356806732944396691005381570580873 /54122222371037658776676579571233761483351206693809497 /87571595343018854458033386304178158174356588264390370 /141693817714056513234709965875411919657707794958199867 /229265413057075367692743352179590077832064383222590237 /370959230771131880927453318055001997489772178180790104 /600224643828207248620196670234592075321836561403380341
/971183874599339129547649988289594072811608739584170445 /1571408518427546378167846658524186148133445300987550786 /2542592393026885507715496646813780220945054040571721231 /4114000911454431885883343305337966369078499341559272017 /6656593304481317393598839952151746590023553382130993248 /10770594215935749279482183257489712959102052723690265265 /17427187520417066673081023209641459549125606105821258513 /28197781736352815952563206467131172508227658829511523778 /45624969256769882625644229676772632057353264935332782291 /73822750993122698578207436143903804565580923764844306069
/119447720249892581203851665820676436622934188700177088360 /193270471243015279782059101964580241188515112465021394429 /312718191492907860985910767785256677811449301165198482789 /505988662735923140767969869749836918999964413630219877218 /818706854228831001753880637535093596811413714795418360007 /1324695516964754142521850507284930515811378128425638237225 /2143402371193585144275731144820024112622791843221056597232 /3468097888158339286797581652104954628434169971646694834457 /5611500259351924431073312796924978741056961814867751431689 /9079598147510263717870894449029933369491131786514446266146
/14691098406862188148944207245954912110548093601382197697835 /23770696554372451866815101694984845480039225387896643963981 /38461794961234640015759308940939757590587318989278841661816 /62232491515607091882574410635924603070626544377175485625797 /100694286476841731898333719576864360661213863366454327287613 /162926777992448823780908130212788963731840407743629812913410 /263621064469290555679241849789653324393054271110084140201023 /426547842461739379460149980002442288124894678853713953114433 /690168906931029935139391829792095612517948949963798093315456 /1116716749392769314599541809794537900642843628817512046429889
/1806885656323799249738933639586633513160792578781310139745345 /2923602405716568564338475449381171413803636207598822186175234 /4730488062040367814077409088967804926964428786380132325920579 /7654090467756936378415884538348976340768064993978954512095813 /12384578529797304192493293627316781267732493780359086838016392 /20038668997554240570909178165665757608500558774338041350112205 /32423247527351544763402471792982538876233052554697128188128597 /52461916524905785334311649958648296484733611329035169538240802 /84885164052257330097714121751630835360966663883732297726369399 /137347080577163115432025771710279131845700275212767467264610201
这回有间隔看的清楚些。

点评

赞一个!  发表于 2023-2-10 08:04
回复 支持 反对

使用道具 举报

发表于 2023-2-10 08:05 | 显示全部楼层
Mathematica可以直接使用:

Fibonacci[3000]

410615886307971260333568378719267105220125108637369252408885430926905584274113403731330491660850044560830036835706942274588569362145476502674373045446852160486606292497360503469773453733196887405847255290082049086907512622059054542195889758031109222670849274793859539133318371244795543147611073276240066737934085191731810993201706776838934766764778739502174470268627820918553842225858306408301661862900358266857238210235802504351951472997919676524004784236376453347268364152648346245840573214241419937917242918602639810097866942392015404620153818671425739835074851396421139982713640679581178458198658692285968043243656709796000
回复 支持 反对

使用道具 举报

发表于 2023-2-10 08:49 | 显示全部楼层
Treenewbee 发表于 2023-2-10 08:05
Mathematica可以直接使用:

Fibonacci[3000]

用207楼的递推公式可以实现快速计算,大概O(logN)吧
回复 支持 反对

使用道具 举报

发表于 2023-2-10 08:53 | 显示全部楼层
可以参考知乎:question/575024550   如何优美地求斐波拉契数列某一项?

回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-11 09:20 | 显示全部楼层
Private Sub Form_DblClick()
    Const Nums = 80
    Dim KLB(Nums) As Long
   
    Randomize
   
    For i = 1 To Nums      'i = 1 到 80
        n = Int(Rnd * Nums) + 1  'n为随机数
        KLB(i) = n
    Next i
   
    s = ""
    For i = 1 To Nums
        s = s & KLB(i) & " "
    Next i
    Debug.Print s
     
    l = 10
    h = 30
    For i = l To h - 1
        For j = i To h
            If KLB(i) > KLB(j) Then
                t = KLB(i)
                KLB(i) = KLB(j)
                KLB(j) = t
            End If
        Next j
    Next i
   
    s = ""
    For i = 1 To Nums
        s = s & KLB(i) & " "
    Next i
    Debug.Print s
    '高手做的排序程序
End Sub
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-11 09:23 | 显示全部楼层
'这个也是高手做的排序程序

Option Explicit

'接收输入:
Dim s, r, n, i
s=inputbox(vbcrlf & vbcrlf & "以空格隔开:","请输入一组数字或字符串:","? + A # 201 * c2 1 $ b 18 / ( A23 _ 15 A1 a1 & \ @ ~  ) - = ^ 4D ? 35 , 67 ! CB 21 % 10")
If s = "" Then wscript.quit
r = Split(s, " ")
n = UBound(r)
'把字符串转换为Double 子类型:
'For i = 0 To n
'    r(i) = CDBL(r(i))
'Next

'快速排序方法调用:
quicksort r, 0, n  '快速排序
'其它排序方法的调用:
'insertsort r  '插入排序
'shellsort r  '希尔排序
'bubblesort r  '冒泡排序
'selectsort r  '选择排序
'heapsort r  '堆排序

'输出结果:
inputbox vbcrlf & vbcrlf & "按升序排列是:","结果",join(r," ")

'各种排序子过程自定义:

'快速排序:
Sub quicksort(ReArr, head, tail)
'ReArr是待排序数组,head和tail是该数组的最小下标和最大下标
Dim lef,rig
Dim pivot

If head<tail Then
lef=head
rig=tail
pivot=ReArr(lef)
While (lef<>rig)

While (lef<rig and ReArr(rig)>=pivot)
rig=rig-1
Wend
If lef<rig Then
ReArr(lef)=ReArr(rig)
lef=lef+1
End If

While (lef<rig and ReArr(lef)<=pivot)
lef=lef+1
Wend

If lef<rig Then
ReArr(rig)=ReArr(lef)
rig=rig-1
End If
Wend

ReArr(lef)=pivot
call quicksort(ReArr,head,lef-1)
call quicksort(ReArr,lef+1,tail)

End If
End Sub

'插入排序:
Sub insertsort(r)
        Dim i, n, t, j
        n = UBound(r)
        For i = 1 To n '依次插入r(1),r(2),...,r(n)
                t = r(i)
                j = i - 1
                Do While t < r(j) '查找r(i)的插入位置
                        r(j + 1) = r(j) '将大于r(i)的数后移
                        j = j - 1
                        If j = -1 Then Exit Do
                Loop
                r(j + 1) = t '插入r(i)
        Next
End Sub

'希尔排序:
Sub shellsort(r)
                '设置增量序列:
        Dim i, d(), n, t, k, h, j
        n = UBound(r)
        i = 0
        ReDim d(n)
        d(i) = Fix(n / 2)
        Do Until d(i) = 1
                t = d(i)
                i = i + 1
                d(i) = Fix(t / 2)
        Loop
                '排序:
        k = 0
        Do
                h = d(k) '取本趟增量
                For i = h To n 'r(h)到r(n)插入当前有序区
                        t = r(i) '保存待插入数
                        j = i - h
                        Do While t < r(j) '查找正确的插入位置
                                r(j + h) = r(j) '后移
                                j = j - h '得到前一数的位置
                                If j < 0 Then Exit Do
                        Loop
                        r(j + h) = t '插入r(i)
                Next '本趟排序完成
                k = k + 1
        Loop While h <> 1
End Sub

'冒泡排序:
Sub bubblesort(r)
        Dim i, n, noswap, j, t
        n = UBound(r)
        For i = 0 To n - 1 '做n趟排序
                noswap = True '置未交换标志
                For j = n - 1 To i Step -1 '从下往上扫描
                        If r(j + 1) < r(j) Then '交换
                                t = r(j)
                                r(j) = r(j + 1)
                                r(j + 1) = t
                                noswap = False
                        End If
                Next
                If noswap Then Exit For '本趟排序中未发生交换则终止算法
        Next
End Sub

'快速排序:
        '划分:
Function partition(r, l, h)
        Dim i, j, t
        i = l
        j = h
        t = r(i) '初始化,t为基准
        Do
                While r(j) >= t And i < j
                        j = j - 1 '从右向左扫描,查找第1个小于t的数
                Wend
                If i < j Then
                        r(i) = r(j) '交换r(i)和r(j)
                        i = i + 1
                End If
                While r(i) <= t And i < j
                        i = i + 1 '从左向右扫描,查找第1个大于t的数
                Wend
                If i < j Then
                        r(j) = r(i) '交换r(i)和r(j)
                        j = j - 1
                End If
        Loop While i <> j
        r(i) = t '基准t已被最后定位
        partition = i
End Function

'选择排序:
Sub selectsort(r)
        Dim i, n, k, j, t
        n = UBound(r)
        For i = 0 To n - 1 '做n趟排序
                k = i
                For j = i + 1 To n '在当前无序区选最小的数r(k)
                        If r(j) < r(k) Then k = j
                Next
                If k <> i Then
                        t = r(i)
                        r(i) = r(k)
                        r(k) = t
                End If
        Next
End Sub

'堆排序:
        '筛选:
Sub sift(r, i, m) '以r(i)为根的完全二叉树构成堆
        Dim t, j
        t = r(i)
        j = 2 * i
        Do While j <= m 'j<=m,r(2*i)是r(i)的左孩子
                If j < m Then
                        If r(j) < r(j + 1) Then j = j + 1 'j指向r(i)的右孩子
                End If
                If t < r(j) Then '孩子节点的数较大
                        r(i) = r(j) '将r(j)换到双亲位置上
                        i = j '修改当前被调整节点
                        j = 2 * i
                Else
                        Exit Do '调整完毕,退出循环
                End If
        Loop
        r(i) = t '最初被调整节点放入正确位置
End Sub
Sub heapsort(r)
        Dim i, n, t
        n = UBound(r)
        For i = Fix(n / 2) To 0 Step -1 '建初始堆
                sift r, i, n
        Next
        For i = n To 0 Step -1 '进行n+1趟排序
                t = r(0) '当前堆顶数和最后一个数交换
                r(0) = r(i)
                r(i) = t
                sift r, 0, i - 1 'r(0)到r(i-1)重建成堆
        Next
End Sub
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2024-5-4 07:18 , Processed in 0.072266 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表