為了找出QQ在線時間最長的5名學(xué)生,李風(fēng)設(shè)計了一個排序程序.程序運行界面如圖所示: 左邊列表框List1中顯示排序前數(shù)據(jù),單擊“排序”按鈕Command1,在右邊列表框List2中顯示在線時間從高到低排名前5名的數(shù)據(jù).程序中數(shù)組a和數(shù)組b分別存儲學(xué)生的QQ昵稱和對應(yīng)的QQ在線時間. 程序代碼如下: Const n As Integer=14'n為學(xué)生數(shù) Dim a(1To n) As String'數(shù)組a用于存儲學(xué)生的QQ昵稱 Dim b(1To n) As Integer'數(shù)組b用于存儲學(xué)生的QQ在線時間 Private Sub Command1_Click ( ) Dim i As Integer,j As Integer,t As String,p As Integer For i=1To n-1 For j=n To i+1Step-1 If ①Then t=a(j-1):a(j-1)=a(j):a(j)=t p=b(j-1):b(j-1)=b(j):b(j)=p End If Next j Next i For i=1To 5 List2.AddItem SpaceEx(a(i))+Str(b(i))+“分鐘“ Next i End Sub '以下函數(shù)用于在字符串后補插空格 Function SpaceEx(s As String) As String Dim t As String,d As Integer,i As Integer t=s:d=Len(s) For i=1To 5-d t=t+““ Next i SpaceEx=② End Function Private Sub Form_Load ( ) '此過程用于對數(shù)組a和數(shù)組b進行賦值,并顯示在List1中,代碼略 End Sub (1)解決此問題采用的算法是
是待排序的數(shù)據(jù),數(shù)據(jù)從a(1)開始存放;整數(shù)型參數(shù)n表示傳入的數(shù)組長度,該函數(shù)的返回值也是一個整數(shù)型數(shù)組.所以調(diào)用此函數(shù)實現(xiàn)排序非常方便: 比如有一個整數(shù)型數(shù)組a(1 to 10)需要降序排序,可以直接這樣調(diào)用: a
=bubble_sort(False,a
,10) 該函數(shù)VB代碼如下: Function bubble_sort(sx As Boolean,a
As Integer,n As Integer) As Integer
Dim i,j,t As Integer For i=1 To n-1 For j=
Step-1 If
Then If a(j)<a(j-1)Then t=a(j):a(j)=a(j-1):a(j-1)=t Else If a(j)>a(j-1)Then t=a(j):a(j)=a(j-1):a(j-1)=t End If Next j Next i bubble_sort=a