




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Visual Basic 程序設計教程,內(nèi)蒙古科技大學實踐訓練中心,第七章 數(shù)組,7.1 數(shù)組的基本概念,7.1.1 數(shù)組的基本概念 數(shù)組:由一定數(shù)目的同類元素按一定順序排列而成的結構類型數(shù)據(jù),是一組具有同一名字、不同下標的下標變量。 一般格式: s(n) 其中:s稱為數(shù)組名,n是下標 一個數(shù)組可以含有若干個下標變量(或稱數(shù)組元素),下標用來指出某個數(shù)組元素在數(shù)組中的位置。如s(3)代表s數(shù)組中的下標為3的元素。 數(shù)組應先定義(聲明)后使用,數(shù)組的聲明包括明確數(shù)組名、類型、維數(shù)和數(shù)組的大小。 靜態(tài)(定長)數(shù)組:聲明數(shù)組時確定大??; 動態(tài)(可變長)數(shù)組: 聲明數(shù)組時不確定大??;,7.1 數(shù)組的基
2、本概念,7.1.1 數(shù)組的基本概念 例:dim mark( 1 to 100) as integer 聲明了一個一維定長數(shù)組,數(shù)組的名字為mark,類型為整型; 共有100個元素,下標的取值范圍:1100。 mark的數(shù)組元素依次為mark(1)、mark(2)、mark(100); mark數(shù)組內(nèi)存分配示意圖:,mark(1),mark(2),mark(i),mark(99),mark(100),每組數(shù)組元素有一個唯一的順序號,下標不能超出數(shù)組聲明時的上、下界范圍。 一個下標表示一維數(shù)組;多個下標,表示多維數(shù)組。 下標可以是整型的常數(shù)、變量、表達式; 一般情況下,數(shù)組中的各元素類型必須相同;
3、但若數(shù)組類型為Variant時,可包 含不同類型的數(shù)據(jù)。,7.1 數(shù)組的基本概念,7.1.2 數(shù)組的定義 數(shù)組的定義方式; Dim:用在窗體模塊或標準模塊及過程中,定義窗體或標準模塊級數(shù)組; ReDim:用來重新定義動態(tài)數(shù)組; Static:用來說明該數(shù)組為靜態(tài)數(shù)組; Global(Public):用在全局模塊中(標準模塊)中,說明數(shù)組為全局的; 1、一維數(shù)組 一個數(shù)組若只有一個下標就能確定一個數(shù)組元素的數(shù)組中的位置,則稱為一 維數(shù)組; 定義形式: Dim 數(shù)組名(下標下界 To 下標上界 ) As 類型名稱 如:Dim a(1 to10) as integer Dim b(10) as in
4、teger,7.1 數(shù)組的基本概念,7.1.2 數(shù)組的定義 2、二維數(shù)組 由具有兩個或多個下標變量所組成的數(shù)組稱為二維或多維數(shù)組。 定義形式: Dim 數(shù)組名(第一維下標下界 To 第一維下標上界, 第二維下標下界 To 第二維下標界 ) As 類型名稱 如:Dim a(1 to10,3 To 20 ) as String 說明: 格式中的數(shù)組名的命名與簡單變量名相同,可以是任意合法的變量名 類型名稱可以是任何VB所定義的合法類型,包括基本類型和用戶自 定義類型; 格式 中部分為可選部分,若省略,則下標下界默認為0,或通過下 面方式定義下標下界的默認值:Option Base n 其中:n只能
5、為0或1;Option只能出現(xiàn)在窗體層或模塊層,且該定 義必須在數(shù)組定義之前完成,若是多維數(shù)組則對每一維都有效。,7.1 數(shù)組的基本概念,7.1.2 數(shù)組的定義 例如: Option Base 1 設置下標默認為1 Dim a(5) as integer a數(shù)組的各元素下標取值為:15 Dim x(3,2) as single x數(shù)組的第一維下標取值:13,第二 維下標取值:12 數(shù)組必須先定義后使用,未定義不能使用,下標為整型常量; 當用Dim語句定義數(shù)組時,該語句把數(shù)組元素初始化為0或空字符串; 同一過程中,數(shù)組名不能與其他數(shù)組名或變量名相同; 數(shù)組聲明中的下標不能是變量,只能是常量; 例
6、【7-1】定義數(shù)組實例及相關概念釋義 Dim a(5) as integer 定義整型數(shù)組a,下標上界為5 a(1)=1 :a(2)=2 對數(shù)組元素賦值 k=a(1)+a(2) 將數(shù)組元素相加再賦給變量k,a(0),a(1),a(2),a(3),a(4),a(5),7.1 數(shù)組的基本概念,7.1.2 數(shù)組的定義 例【7-2】定義一個二維數(shù)組及概念釋義,Text,7.1 數(shù)組的基本概念,例【7-3】 用循環(huán)方式對數(shù)組賦值。,7.1 數(shù)組的基本概念,7.1.3 多維數(shù)組和數(shù)組下標界值 如果在數(shù)組中需要通過兩個或兩個以上的下標才能確定數(shù)組元素在數(shù)組中的位置稱為多維數(shù)組。 兩個下標稱為二維數(shù)組,三個下
7、標稱為三維數(shù)組等等。 定義方法: Dim 數(shù)組名(第一維下標下界 To 第一維下標上界,第二維下標下界 To 第二維下標上界,第三維下標下界 To 第三維下標上界,) As 類型名稱 多維數(shù)組在內(nèi)存中所占的空間大小為(所占空間長度應小于64KB): 維數(shù)1維數(shù)2 維數(shù)3 維數(shù)n 類型字節(jié)數(shù)(長度) 如:Dim x(4,3,2,5) As Integer 其所占內(nèi)存長度=54362=720(字節(jié)),7.1 數(shù)組的基本概念,7.1.3 多維數(shù)組和數(shù)組下標界值 確定數(shù)組的上下界值的函數(shù): LBound(數(shù)組名,維) 返回數(shù)組指定維的下界; UBound(數(shù)組名,維) 返回數(shù)組指定維的上界; 如:Di
8、m A(-3 to 4,1 to 2, 3 to 5, -1 to 6) as integer Lbound(a,1)=3 數(shù)組a的第一維下界為3; Ubound(a,3)=5 數(shù)組a的第3維上界為5; 如:Dim a(2,1,1) as integer 共有3個下標值,即a為三維數(shù)組,該數(shù)組共有322=12 個元素; 排列順序如下: a(0,0,0) a(0,0,1) a(0,1,0) a(0,1,1) a(1,0,0) a(1,0,1) a(1,1,0) a(1,1,1) a(2,0,0) a(2,0,1) a(2,1,0) a(2,1,1),7.2 靜態(tài)數(shù)組與動態(tài)數(shù)組,7.2.1 靜態(tài)數(shù)
9、組及其定義 靜態(tài)數(shù)組:在聲明時就確定其大小的數(shù)組。靜態(tài)數(shù)組是用數(shù)值常量或符號常量作為下標定維的。(靜態(tài)數(shù)組是由關鍵字Static定義的數(shù)組) 靜態(tài)數(shù)組在計算機內(nèi)存中運行: 靜態(tài)數(shù)組在編譯階段給數(shù)組分配內(nèi)存空間,即靜態(tài)數(shù)組沒有運行時已有了相應的內(nèi)存區(qū)間,故在定義靜態(tài)數(shù)組時要求在編譯階段就知道該數(shù)組的元素個數(shù)。 靜態(tài)數(shù)組元素的值在定義該數(shù)組的運行后,該數(shù)組所擁有的內(nèi)存空間不釋放,變量的值仍在內(nèi)存中,再次運行時,將上次運行的結果作為該變量的初始值,只有當整個應用程序退出后,所占內(nèi)存才會被釋放。,7.2 靜態(tài)數(shù)組與動態(tài)數(shù)組,7.2.1 靜態(tài)數(shù)組及其定義 上述效果的數(shù)組定義方法: 在全局模塊中使用Glo
10、bal語句定義; 在窗體或模塊級用Dim定義; 靜態(tài)定義:在過程中用Static語句定義;或用Static定義過程,而在過 程中使用Dim語句定義數(shù)組。 例7-4靜態(tài)數(shù)組與非靜態(tài)數(shù)組的對比,Static a(4) As Integer 定義靜態(tài)數(shù)組a Static start As Integer 定義靜態(tài)變量 Dim b(4) As Integer 定義非靜態(tài)數(shù)組b Dim i As Integer If start = 0 Then Print 靜態(tài)數(shù)組:, , 非靜態(tài)數(shù)組: End If For i = 0 To 4 a(i) = a(i) + i 賦值給靜態(tài)數(shù)組a b(i) = b(i
11、) + i 賦值給非靜態(tài)數(shù)組b Next,For i = 0 To 4 Print a(i); Next Print , For i = 0 To 4 Print b(i); Next Print start = 1,7.2 靜態(tài)數(shù)組與動態(tài)數(shù)組,7.2.2 動態(tài)數(shù)組及其定義 動態(tài)數(shù)組在定義時并不知道數(shù)組的大小,要在運行期確定,并根據(jù)需要在運行期可改變數(shù)組的大小。 動態(tài)數(shù)組的定義過程: 在窗體、標準模塊和過程中用Dim或Public聲明一個沒有下標的數(shù)組 (括號不能省略); 如:dim a( ) as integer 數(shù)組重定義。在過程中需要使用該數(shù)組前,用Redim語句定義數(shù)組的 大小(數(shù)組元
12、素個數(shù)),下標可為常量、變量或表達式,但變量或 表達式此時必須有值。 如:Redim a(4),7.2 靜態(tài)數(shù)組與動態(tài)數(shù)組,7.2.2 動態(tài)數(shù)組及其定義 動態(tài)數(shù)組定義格式: Dim 數(shù)組名( ) As 類型名 定義數(shù)組名 Redim Preserve 變量名 (下標) 重定義數(shù)組大小 在重定義時,按下標說明的上、下界重新分配內(nèi)存存儲單元。當重新定義 動態(tài)數(shù)組時,數(shù)組的內(nèi)容將被清除; 若在Redim語句中使用了Preserve選項,則不清除數(shù)組中的內(nèi)容,但使 用“Preserve”只能改變最后一維的大小, 前面幾維的大小不能改變。,7.2 靜態(tài)數(shù)組與動態(tài)數(shù)組,7.2.2 動態(tài)數(shù)組及其定義 使用動
13、態(tài)數(shù)組時應注意以下幾點: 使用動態(tài)數(shù)組可重新定義數(shù)組的大小和維數(shù),但不能改變數(shù)組的類型: Dim a( ) as integer Redim a(4) Redim a(3,2) Redim a(6) a(1)=“Visual Basic” 此句有錯誤,試圖改變數(shù)組的類型 建立局部動態(tài)數(shù)組時,可省略Dim語句,由Redim語句直接定義數(shù)組。 使用Dim時,所定義數(shù)組的維數(shù)不超過8維,直接使用Redim定義數(shù)組, 維數(shù)可達到60維。 在同一過程中,可多次使用Redim語句定義同一個數(shù)組,以改變數(shù)組的 大小和維數(shù);,7.3 數(shù)組的基本操作,7.3.1 數(shù)組元素的輸入、輸出和復制 1、數(shù)組元素的輸入
14、對于數(shù)組元素較少的數(shù)組,可通過單個賦值語句進行輸入操作; 對于數(shù)組元素較多的數(shù)組,一般通過For語句和InputBox函數(shù)輸入。 Option Base 1 默認下標下界為1 dim b(2,3) as single for i=1 to 2 for i=1 to 3 b(i,j)=inputbox(“輸入b(” , 以緊湊格式輸出數(shù)組元素 Next Print Next,7.3 數(shù)組的基本操作,7.3.1 數(shù)組元素的輸入、輸出和復制 3、數(shù)組元素的復制 單個數(shù)組可以像簡單變量一樣,從一個數(shù)組復制到另一個數(shù)組。 Dim b(4,8),a(6,5) 數(shù)組定義 b(2,3)=a(3,2) 數(shù)組復制
15、,7.3 數(shù)組的基本操作,7.3.1 數(shù)組元素的輸入、輸出和復制 二維數(shù)組中的元素也可以復制給另一個二維數(shù)組中的某個元素,也可以復制給一個一維數(shù)組中的某個元素,并且反之亦然。 Dim a(8),b(3,2) a(3)=b(1,2): b(3,2)=a(7) 為了復制整個數(shù)組,仍要使用For循環(huán)語句。 option base 1 dim name1( ),name2( ) redim name1(10),name2(10) for i=1 to10 給name1的10個元素賦值 name1(i)=inputbox(“請輸入姓名:”) next for i=1 to 10 利用For循環(huán)將name
16、1的數(shù)據(jù)復制給name2 name2(i)=name1(i) next,7.3 數(shù)組的基本操作,7.3.2 For EachNext語句 For EachNext語句專門針對一個數(shù)組或集中的每個元素執(zhí)行重復語句。 一般格式: For Each 成員 In 數(shù)組 循環(huán)語句序列 Exit For 循環(huán)語句序列 Next 成員 其中: 成員:相當于一個循環(huán)變量,它表示數(shù)組中的每個元素; 數(shù)組:為一個數(shù)組名稱; For Each Next語句主要用來對數(shù)組元素進行處理,包括查詢、顯示或讀取。它執(zhí)行的次數(shù)由數(shù)組元素的個數(shù)決定。 Dim a(1 to 5) For Each x In a print x,
17、 Next,7.3 數(shù)組的基本操作,7.3.2 For EachNext語句 例7-3_1 For Each Next使用實例,For i = 1 To 20 arr(i) = Int(Rnd * 100) 為數(shù)組賦值 Next 顯示數(shù)組元素的值 For Each arr_elem In arr If arr_elem 50 Then Print arr_elem; Sum = Sum + arr_elem End If If arr_elem 95 Then Exit For Next Print Print Sum,7.3 數(shù)組的基本操作,7.3.3 數(shù)組的初始化 數(shù)組的初始化就是給數(shù)組元
18、素賦初值。 格式: 數(shù)組名Array(數(shù)組元素初始值) 說明: 初始值與相應數(shù)組元素一一對應,初始值相互之間用逗號隔開; 在初始化前對數(shù)組元素的定義不能是具體的數(shù)據(jù)類型,只能是 Variant型,或為默認類型; 對于該數(shù)組可以不定義而直接由Array函數(shù)來確定; 如:dArray(1,2,3,4) 此時數(shù)組d為variant類型,有4個元素,其初始值依次為1,2,3,4; 此種方法只能初始化一維數(shù)組;,7.3 數(shù)組的基本操作,7.3.3 數(shù)組的初始化 例7-3_2數(shù)組的初始化實例。,Dim n1 As String, n2 As String Dim i As Integer Number =
19、 Array(“One”, “Two”, “Three”) 數(shù)組初始化 n1 = Number(0) n2 = Number(1) x = Array(1, 2, 3) 數(shù)組初始化 For i = 0 To 2 Print x(i); Next Print Print n1; n2,7.4 控件數(shù)組,7.4.1 控件數(shù)組的概念 控件數(shù)組:是由一組相同類型的控件組成,這些控件據(jù)有一個相同的名稱, 相同的屬性名。 特點: (1)這些控件由控件數(shù)組的下標來區(qū)別,而下標由每個控件的唯一標 識索引號(Index)來標識,通過Index屬性即可區(qū)別控件數(shù)組元素, Index從0 開始取值,如:控件數(shù)組Te
20、xt1(2)表示控件數(shù)組Text1的 第3個元素。 (2)同一個控件數(shù)組的所有元素,具有相同的Name屬性值,但對于其他 屬性則沒有規(guī)定必須完全相同; (3)控件數(shù)組的所有元素,共享同樣的事件過程,故控件數(shù)組適用于若 干個控件執(zhí)行的操作相似的場合。 為區(qū)分觸發(fā)某個事件是由哪個控件觸發(fā)的,VB會把該控件的下標索引 值(Index)值傳遞給過程。,7.4 控件數(shù)組,7.4.1 控件數(shù)組的概念 如:設命令按鈕控件數(shù)組名為Command,其單擊事件過程為: Sub Command_Click(Index as Integer) End Sub 經(jīng)過參數(shù)傳遞判斷Index的值,便知道用戶按下哪一個按鈕,
21、也就知道可以對該按鈕進行相應編程。 Sub Command_Click(Index as Integer) if index=4 then label1.caption=“第五個按鈕被點擊” end if End Sub,7.4 控件數(shù)組,7.4.2 控件數(shù)組的建立 方法: 在設計階段建立,至此,建立了控件數(shù)組,其Index值根據(jù)粘貼的次序,自動從0開始賦值。,7.4 控件數(shù)組,7.4.2 控件數(shù)組的建立 方法: 在運行時添加控件數(shù)組,第一步,第二步,第三步,設計階段于窗體上畫出某個控件,設置Name屬性(如comm),并將Index值設為0,在適當?shù)氖录杏?Load方法添加其他若干個控件數(shù)
22、組,對Comm(i)控件的 相應屬性值進行修 改,其中: Load方法為:Load Comm(i) Comm為控件數(shù)組名,i為第i個控件數(shù)組元素的Index值,7.4 控件數(shù)組,7.4.2 控件數(shù)組的建立 例7-6 創(chuàng)建4個單選按鈕(Option Button)作為一個控件數(shù)組,當選定某個按鈕時,顯示不同的圓形如圓形、方形、螺線和藝術圖案。 解題思路:利用控件數(shù)組建立四個單選鈕控件,并根據(jù)點擊控件返回值確定繪畫的圖像。,7.4 控件數(shù)組,7.4.2 控件數(shù)組的建立 例7-7 創(chuàng)建1個命令按鈕、一個圖片框和一個單選按鈕,每單擊一次命令按鈕,增加一個新的單選按鈕,若單擊某個單選按鈕,則在圖片框中畫
23、出一個具有不同填充圖案的畫。,7.5 自定義數(shù)據(jù)類型,7.5.1 自定義數(shù)據(jù)類型的定義 自定義數(shù)據(jù)類型也稱為記錄類型,由若干個標準數(shù)據(jù)類型構成,通過Type語句實現(xiàn)。 形式如下: Type 自定義類型名稱 元素名1(下標) As 類型名稱 元素名2(下標) As 類型名稱 元素名n(下標) As 類型名稱 End Type 其中: 元素名:自定義數(shù)據(jù)類型中的一個成員; 下標:表示是數(shù)組 ; 類型名稱:為標準類型;,7.5 自定義數(shù)據(jù)類型,7.5.1 自定義數(shù)據(jù)類型的定義 例如:一個有關學生信息的自定義數(shù)據(jù)類型 Type StdType 定義名為StdType的數(shù)據(jù)類型 No As Intege
24、r 學號 整型 Name As String *4 姓名 字符型 定長為4個字符 Sex As String *1 性別 字符型 定長為1個字符 Score (1 TO 4) As Single 成績數(shù)組 單精度浮點數(shù) Total As Single 總成績 單精度浮點數(shù) End Type 注意: 自定義數(shù)據(jù)類型一般在標準模塊(.bas)中定義,默認是Public型; 若在窗體模塊中定義,則必須是Private。 自定義數(shù)據(jù)類型中的元素類型可以是字符串,但應是定長字符串; 自定義數(shù)據(jù)類型和數(shù)組都是由若干個數(shù)據(jù)元素組成,但前者的元素 代表不同性質(zhì)、不同類型的數(shù)據(jù),以元素名表示不同的元素;而數(shù) 組
25、存放的是同種性質(zhì)、同種類型的數(shù)據(jù),以下標表示不同的元素。,7.5 自定義數(shù)據(jù)類型,7.5.2 自定義類型變量的聲明和使用 1、自定義類型變量的聲明 一旦定義好了類型,就可以在變量的聲明時使用該變量。 形式: Dim 變量名 As 自定義類型 例如,有了上述定義的數(shù)據(jù)類型StdType,則可以說明如下變量: Dim Student As StdType,Mystd As StdType 要表示自定義類型變量中的某個元素,形式如下: 變量名.元素名 如:Student.No 表示Student變量中的學號 Student.Name 表示Student變量中的姓名 Student.Score(2)
26、表示Student變量中的第2門成績 也可利用With語句進行簡化,7.5 自定義數(shù)據(jù)類型,7.5.2 自定義類型變量的聲明和使用 2、With語句 With語句的功能就是簡化對自定義類型變量中元素的訪問方式; 格式:,等價于,7.5 自定義數(shù)據(jù)類型,7.5.2 自定義類型變量的聲明和使用 3、自定義類型變量的使用 With Student .No=2005 .Name=“吳仁迪” .Sex=“男” .Total=0 For i=1 to 4 .Score(i)=InputBox(“請輸入”+.Name+”的第”+str(i)+”門課程成 績”, ,0) .Total=.Total+Score
27、(i) Next print .Name,.Total End With Mystd=Student VB允許同種自定義類型變量直接賦值,7.5 自定義數(shù)據(jù)類型,7.5.3 自定義類型數(shù)組的應用 自定義類型數(shù)組就是數(shù)組中的每個元素都是相同的自定義類型。 如:Dim Std( 1 To 35) As StdType 定義了有35個元素的數(shù)組Std,該數(shù)組的每個元素又都是StdType類型。 例7-8利用自定義類型數(shù)組,編寫模擬數(shù)據(jù)庫記錄輸入、顯示和查詢的程序。自定義一個數(shù)據(jù)類型,由學號、姓名和三門課程成績以及總分組成,聲明一個存放40個學生記錄的數(shù)組。,No Name Score(1) Scor
28、e(2) Score(3) Total,Stud(1),7.6 常用算法與數(shù)據(jù)結構二,7.6.1 分類統(tǒng)計 例7-9利用一維數(shù)組統(tǒng)計一個班學生的成績在09、1019、2029、9099以及100各分數(shù)段的人數(shù)分布 解題思路:定義一個有11個元素的一維數(shù)組a( 0 to 10), a(0):09分的學生人數(shù); a(1):1019分的學生人數(shù); a(2):2029分的學生人數(shù); a(9):9099分的學生人數(shù); a(10):100分的學生人數(shù); 根據(jù)學生成績score,計算int(score/10),將其分類到相應的數(shù)組元素中。,7.6 常用算法與數(shù)據(jù)結構二,7.6.2 大量數(shù)據(jù)的輸入和編輯 例7
29、-10輸入一個45的二維整數(shù)數(shù)組,輸出數(shù)組元素的平均值及該數(shù)組。 解題思路:給二維數(shù)據(jù)元素賦值、顯示,一般需要使用用二層For循環(huán),外層循環(huán)控制第一維數(shù)組元素,內(nèi)層循環(huán)控制第二維數(shù)組元素。,Dim a(1 To 4, 1 To 5), i, j As Integer Dim average, sum As Integer sum = 0 For i = 1 To 4 For j = 1 To 5 a(i, j) = Val(InputBox(請輸入a( Next Print Next,7.6 常用算法與數(shù)據(jù)結構二,7.6.3 尋找最大值/最小值 例7-11求數(shù)組中最大元素和所在下標及各元素之和
30、。 解題思路:首先將數(shù)組第一個元素的賦給max變量,而后從數(shù)組的第二個元素開始依次同max比較,并將大的值賦給max,最后,max的值為數(shù)組中最大的值。,Dim max As Integer, imax As Integer, sum As Integer Dim i As Integer Dim a(1 To 10) As Integer For i = 1 To 10 a(i) = Val(InputBox(請輸入a( sum,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 排序就是將一組數(shù)按遞增或遞減的次序重新排列。 排序的方法:選擇法、冒泡法、插入法和合并排序。 1、選擇法排序 算
31、法描述: 設有n個數(shù)的數(shù)組a(1),a(2),a(n),要求按遞增的次序排列: 首先設變量k用于存放當前最小數(shù)的下標,然后按下列步驟進行: 從n個數(shù)中選出最小元素的下標,然后將最小數(shù)與第一個數(shù)交換位 置,即a(k)與a(1)互換; 先將a(1)與a(2)進行比較,k的初值為1; 若a(2)a(k),則將變量k指向2(k總是為較小元素的下標值); 再將a(k) 與a(3)、a(n-1)、a(n)比較 ,并依次作出同樣 的處理,最終k為n個數(shù)中最小元素的下標,a(k)為最小的元素; 此時將a(k)與a(1)互換;,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 1、選擇法排序 從除第一個數(shù)外,
32、其余n1個數(shù)按步驟的方法選出次小的數(shù),使a(k) 與a(2)交換位置; 先將k置為2,將a(k)與a(3)、a(4)、a(n-1)、a(n)比較,每當 a(i)a(k)時,置k為i,最后,k為第一輪余下的n1個數(shù)中的最小數(shù) 將a(k)與a(2)互換; 繼續(xù)進行第三輪、第四輪、.、直到第n1輪,余下的a(n)就是n個數(shù) 中的最大值; 至此,n個數(shù)已從小到大順序存放到數(shù)組a中。,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 1、選擇法排序,8,1,9,7,6,1,A(1) A(2) A(3) A(4) A(5) A(6),原始值,第一輪(1),8,1,9,7,6,1,k=1,a(1)和a(2
33、) 相比較,8,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 1、選擇法排序,A(1) A(2) A(3) A(4) A(5) A(6),第一輪(3),8,1,9,7,6,1,1,k=2, a(2)與 a(1)交換,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 1、選擇法排序,A(1) A(2) A(3) A(4) A(5) A(6),第二輪(1),8,1,9,7,6,1,8,k=2,a(2)和a(3)相比較,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 1、選擇法排序,A(1) A(2) A(3) A(4) A(5) A(6),第二輪(4),8,1,9,7,6,1,6,a(
34、6)a(5),k=6, a(6)和a(2)交換,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 1、選擇法排序,A(1) A(2) A(3) A(4) A(5) A(6),第三輪(1),8,1,9,7,6,1,9,k=3,a(3)和a(4)比較,a(4)a(3), k=4,用a(4)和a(5)比較,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 1、選擇法排序,A(1) A(2) A(3) A(4) A(5) A(6),第四輪(1),8,1,9,7,6,1,7,K=4,a(4)和a(5)比較 本輪無交換,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 1、選擇法排序,A(1) A(
35、2) A(3) A(4) A(5) A(6),第五輪(1),8,1,9,7,6,1,9,K=5,a(5)和a(6)比較,交換a(6)和a(5),7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 1、選擇法排序,例7-12將數(shù)組中的6個數(shù),用選擇法遞增順序排列。,Dim a(6) As Integer Dim k, n, i, j, t As Integer Randomize n = 6 給數(shù)組6個元素賦值,09中的隨機整數(shù) For i = 1 To n a(i) = Int(Rnd * 9) + 1 Label2.Caption = Label2.Caption + Str(a(i) Ne
36、xt 選擇排序法 For i = 1 To n - 1 k = i For j = i + 1 To n If a(k) a(j) Then k = j 找出最小值的下標 Next 交換數(shù)組元素,使最小的元素排在第一位 t = a(k): a(k) = a(i): a(i) = t 將排序結果顯示在Label上 Label4.Caption = Label4.Caption + Str(a(i) Next Label4.Caption = Label4.Caption + Str(a(i),7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 2、冒泡法排序 冒泡法在每一輪排序時將相鄰的數(shù)比較,
37、當次序不對就交換位置。 冒泡法若有n個元素,則需要比較n-1輪。 比較方向:可從右向左,也可以從左向右;而且每一輪都是從頭比較到尾。,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 2、冒泡法排序,8,1,9,7,6,1,A(1) A(2) A(3) A(4) A(5) A(6),原始值,第一輪(1),1,9,7,6,1,A(5)a(6) 交換a(6)和a(5),8,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 2、冒泡法排序,A(1) A(2) A(3) A(4) A(5) A(6),第一輪(3),1,9,7,6,1,8,A(3)a(4) 交換a(3)和a(4),7.6 常用算法與
38、數(shù)據(jù)結構二,7.6.4 數(shù)組排序 2、冒泡法排序,A(1) A(2) A(3) A(4) A(5) A(6),第一輪結果,8,9,7,6,1,1,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 2、冒泡法排序,A(1) A(2) A(3) A(4) A(5) A(6),第二輪(1),1,9,7,6,1,8,A(5)a(6) 交換a(6)和a(5),7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 2、冒泡法排序,A(1) A(2) A(3) A(4) A(5) A(6),第二輪(4),8,9,7,6,1,1,1,9,7,6,1,8,第二輪結果,A(2)a(3) 交換a(2)和a(3),7
39、.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 2、冒泡法排序,A(1) A(2) A(3) A(4) A(5) A(6),第三輪(1),1,9,7,6,1,8,A(5)a(6) 交換a(5)和a(6),7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 2、冒泡法排序,A(1) A(2) A(3) A(4) A(5) A(6),第三輪結果,8,9,7,6,1,1,第三輪(3),1,9,7,6,1,8,A(3)a(4) 交換a(3)和a(4),7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 2、冒泡法排序,A(1) A(2) A(3) A(4) A(5) A(6),第四輪(1),1,9,
40、7,6,1,8,A(5)a(6) 不交換,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 2、冒泡法排序,A(1) A(2) A(3) A(4) A(5) A(6),第五輪(1),1,9,7,6,1,8,7.6 常用算法與數(shù)據(jù)結構二,7.6.4 數(shù)組排序 2、冒泡法排序,例7-13將數(shù)組中的6個數(shù),用冒泡排序法排序。,Dim a(6) As Integer Dim k, n, i, j, t As Integer Randomize n = 6 給數(shù)組6個元素賦值,09中的隨機整數(shù) For i = 1 To n a(i) = Int(Rnd * 9) + 1 Label3.Caption = Label3.Cap
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 私人二手房售房合同范本
- 司機保密合同范本
- 年度框架采購合同范本
- 低首付貸款合同范本
- 樂器租賃合同范本模板
- 原料肉購銷合同范本
- 同行競爭合同范本
- 單間鋪面出售合同范本
- 叉車機床購銷合同范本
- 合同范例軟件叫
- 2024年四川成都市公共交通集團有限公司招聘筆試參考題庫含答案解析
- 第2章導游(課件)《導游業(yè)務》(第五版)
- 2023年北京重點校初二(下)期中數(shù)學試卷匯編:一次函數(shù)
- 加推樓盤營銷方案
- 新人教版五年級小學數(shù)學全冊奧數(shù)(含答案)
- 2024年?;钒踩芾碇贫群蛵徫话踩僮饕?guī)程(9篇范文)
- 無人機固定翼行業(yè)報告
- 《莖和葉》名師課件
- 玻璃體腔注射-操作流程和注意事項(特選參考)課件
- JGJ114-2014 鋼筋焊接網(wǎng)混凝土結構技術規(guī)程
- 110kV升壓站構支架組立施工方案
評論
0/150
提交評論