數(shù)組常見算法_第1頁
數(shù)組常見算法_第2頁
數(shù)組常見算法_第3頁
數(shù)組常見算法_第4頁
數(shù)組常見算法_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、1 求10個數(shù)中的最大值及其下標(biāo)首先定義包含10個元素的一維數(shù)組,然后賦初值(兩種方法,一是通過隨機函數(shù),二是用inputbox函數(shù))Private Sub Form_Click()Dim a(1 To 10) As Integer, max As Integer, i%, p% 'max存放10個數(shù)中的最大值,p存放當(dāng)前最大值的下標(biāo)Print "這10個數(shù)分別是"PrintFor i = 1 To 10 a(i) = Int(Rnd * 91) + 10 '給一維數(shù)組賦初值,為10到100之間的隨機值 'a(i) = InputBox("

2、請輸入10個數(shù)") Print a(i);Next i max = a(1) p = 1For i = 2 To 10 If a(i) > max Then max = a(i) p = i End IfNext iPrintPrint "這10個數(shù)中最大值和下標(biāo)為:"Print max, pEnd Sub2. 將包含10個元素的數(shù)組倒置(逆序),說明,即第一元素和最后一個元素交換,第二個元素和倒數(shù)第二個元素交換,一致類推,可以推導(dǎo)出兩個要交換的數(shù)的下標(biāo)之和為11(如果是n個數(shù)下標(biāo)之和為n+1),如對10個數(shù)逆序輸出交換的次數(shù)為5次,如果是n個數(shù)交換的次數(shù)為

3、n/2次Private Sub Form_Click()Dim a(1 To 10) As Integer, i%, t%Print "交換前這10個數(shù)分別是"PrintFor i = 1 To 10 Randomize a(i) = Int(Rnd * 91) + 10 '給一維數(shù)組賦初值,為10到100之間的隨機值 Print a(i);Next iFor i = 1 To 5t = a(i)a(i) = a(11 - i)a(11 - i) = tNext iPrintPrint "交換后這10個數(shù)分別是"PrintFor i = 1 To

4、 10 Print a(i);Next iEnd Sub3. 從鍵盤輸入10個數(shù),然后求其偶數(shù)之和與奇數(shù)之和Private Sub Form_Click()Dim a(1 To 10) As Integer, i%, sum1%, sum%sum1 = 0 '存放偶數(shù)之和sum2 = 0 '存放奇數(shù)之和Print "交換前這10個數(shù)分別是"PrintFor i = 1 To 10 Randomize a(i) = Int(Rnd * 91) + 10 '給一維數(shù)組賦初值,為10到100之間的隨機值 Print a(i);Next iFor i = 1

5、 To 10If a(i) Mod 2 = 0 Then sum1 = sum1 + a(i)Else sum2 = sum2 + a(i) End IfNext iPrintPrint "這10個數(shù)中偶數(shù)之和為:" & sum1Print "這10個數(shù)中奇數(shù)之和為:" & sum2End Sub4 排序問題一是冒泡法:Private Sub Form_Click()Dim a(1 To 10) As IntegerDim i As IntegerDim t As IntegerDim j As IntegerPrint "這1

6、0個數(shù)為:"RandomizeFor i = 1 To 10 Step 1a(i) = Int(Rnd * 91) + 10Next iFor i = 1 To 10 Step 1 Print a(i); Space(5);Next iPrintFor i = 1 To 9For j = 1 To 10 - iIf a(j + 1) < a(j) Then t = a(j) a(j) = a(j + 1) a(j + 1) = t End If Next jNext iPrint "從小到大排序后這10個數(shù)為:" For i = 1 To 10 Step 1

7、 Print a(i); Space(5);Next iEnd Sub方法二選擇法排序Private Sub Form_Click()Dim a(1 To 10) As IntegerDim i As IntegerDim k As IntegerDim t As IntegerDim j As IntegerFor i = 1 To 10 Step 1 Randomize a(i) = Int(Rnd * 91) + 10Next iFor i = 1 To 10 Step 1 Print a(i); Space(5);Next iPrintFor i = 1 To 9k = iFor j

8、= i + 1 To 9If a(j) < a(k) Then k = jNext j t = a(i) a(i) = a(k) a(k) = tNext iPrint For i = 1 To 10 Step 1 Print a(i); Space(5);Next i End Sub5. Fibonacci序列,序列為1,1,2,3,5,8.輸入該序列的前30項,并且五個一行輸出Private Sub Form_Click()Dim a!(1 To 30), i%a(1) = 1a(2) = 1Print a(1); a(2);For i = 3 To 30 Step 1a(i) =

9、a(i - 1) + a(i - 2)Print a(i);If i Mod 5 = 0 Then PrintNext iEnd Sub6.有一個已經(jīng)按升序排序好的一維數(shù)組,另輸入一個數(shù),按原來的規(guī)律插入到該數(shù)組中說明:找到該數(shù)num要插入的位置是關(guān)鍵,因為是升序,所以一旦該數(shù)第一次大于數(shù)組中的元素是,這個時候就是該數(shù)插入數(shù)組中的位置,記為k的話,那么就要把該位置騰出來,此時只要從最后一個元素開始到第K個元素往后移動一個位置,第k個元素的位置騰出,就可將數(shù)據(jù)num插入Private Sub Form_Click()Dim a%(1 To 11), i%, j%, t%, n%i = 1Prin

10、t "這10個數(shù)分別是"PrintFor i = 1 To 10 a(i) = i * 2 '給一維數(shù)組賦初值 Print a(i);Next in = InputBox("請輸入一個數(shù):")For i = 1 To 10If n < a(i) Then Exit For i即是num要插入的位置Next i For j = 10 To i Step -1 a(j + 1) = a(j) Next j a(i) = n Print For i = 1 To 11 Print a(i);Next iEnd Sub大家想想如果題目改成如下,怎么

11、做?設(shè)有一個已排序好的數(shù)組,另輸入一個數(shù),要求按原來的規(guī)律將它插入到數(shù)組中說明:這樣的話就應(yīng)該分兩種情況,判斷是升序還是降序,然后再找出該數(shù)需要插入的位置Private Sub Form_Click()Dim a%(1 To 11), i%, j%, t%, n%Print "這10個數(shù)分別是"PrintFor i = 1 To 10 a(i) = i * (-2) '給一維數(shù)組賦初值 Print a(i);Next in = InputBox("請輸入一個數(shù):")If a(1) < a(2) Then '判斷是升序還是降序,如果第

12、一個元素小于第二元素,說明是升序,否則降序i = 1 Do While n > a(i) i = i + 1 Loop For j = 10 To i Step -1 a(j + 1) = a(j) Next j a(i) = n Else i = 1 Do While n < a(i) i = i + 1 Loop For j = 10 To i Step -1 a(j + 1) = a(j) Next j a(i) = n End If Print For i = 1 To 11 Print a(i);Next iEnd Sub7.編一程序,從一個已排序好的數(shù)組中刪去某個位置上

13、的元素說明:要找到欲刪除的元素的位置k;然后從k+1到n個位置開始向前移動;最后將數(shù)組元素的個數(shù)減1Private Sub Form_Click()Dim a%(1 To 10), i%, j%, t%, n%i = 1Print "這10個數(shù)分別是"PrintFor i = 1 To 10 a(i) = i * 2 '給一維數(shù)組賦初值 Print a(i);Next in = InputBox("請輸入要刪除元素的位置:") For j = n + 1 To 10 a(j - 1) = a(j) Next j Print Print "

14、;刪除第" & n & "個位置元素后為" For i = 1 To 9 Print a(i);Next iEnd Sub8.假設(shè)有一個整型數(shù)組,另輸入一個整數(shù),編程查找這個整數(shù)是否在數(shù)組中出現(xiàn)過,如出現(xiàn),則輸出第一次出現(xiàn)的位置,否則,輸出no foundPrivate Sub Form_Click()Dim a%(1 To 10), i%, flag%, num, nflag = 0Print "一維數(shù)組的值如下:"For i = 1 To 10a(i) = Int(Rnd * 91) + 10 '假定給一維數(shù)組賦10

15、到100之間的隨機值Print a(i);Next inum = InputBox("請輸入一個數(shù):")For i = 1 To 10If a(i) = num Thenflag = 1n = iExit ForEnd IfNext iPrintIf flag = 1 ThenPrint num & "在一維數(shù)組中出現(xiàn)的位置是" & nElsePrint " no found"End IfEnd Sub9. 二維數(shù)組元素求所有元素中最大值及其下標(biāo)Private Sub Form_Click()Dim a%(1 To 2

16、, 1 To 3), max%, i%, j%, r%, c% '其中i和j分別控制行和列,r和c存放當(dāng)前最大元素的行下標(biāo)和列下標(biāo)For i = 1 To 2For j = 1 To 3Randomizea(i, j) = Int(Rnd * 10) + 90 '用隨機函數(shù)給二維數(shù)組賦值'a(i, j) = InputBox("請輸入6個數(shù)") '用inputbox給二維數(shù)組賦值Print a(i, j);Next jPrintNext ir = 1c = 1max = a(1, 1)For i = 1 To 2For j = 1 To 3I

17、f a(i, j) > max Thenmax = a(i, j)r = ic = jEnd IfNext jNext iPrint "二維數(shù)組中最大的元素及其行下表和列下標(biāo)為:" & max, r, cEnd Sub10. 編寫一程序,在一個二維數(shù)組中,查找第一次出現(xiàn)的負(fù)數(shù),并輸出該數(shù)及其所在的行和列號說明:假設(shè)這個二維數(shù)組包含3行4列,有兩種情況,一種是出現(xiàn)負(fù)數(shù),一種情況是沒有出現(xiàn)負(fù)數(shù),我們首先假定沒有出現(xiàn)負(fù)數(shù),用flag=0記下這鐘情況,那么如果找到的話,flag=1,此時就要退出內(nèi)層循環(huán)并且推出外層循環(huán)。Private Sub Form_Click()Dim a%(1 To 3, 1 To 4), i%, j%, flag%, row%, column%flag = 0Print "二位數(shù)組如下:"For i = 1 To 3 For j = 1 To 4 a(i, j) = Int(Rnd * 41) - 20 '假定給二維數(shù)組賦-20到20之間的隨機值 Print a(i, j); Next j PrintNext iFor i = 1 To 3 For j = 1 To 4 If a(i, j) < 0 Then flag = 1 row = i col

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論