16.小明基于冒泡排序思想設計了一個改進的排序算法。該算法先用冒泡法將數組a中奇數位置的元素、偶數位置的元素分別進行排序,然后再進行后續處理。算法的VB程序段如下,但加框處代碼有錯,請改正。 ’待排序數據存儲在數組a中(a(1)~a(n)),要求升序排列 For i=1 To (n-1)\2 For j=1 To n-i*2 If Then t=a(j):a(j)=a(j+2):a(j+2)=t End If Next j Next i For i=1 To n\2 j=2*i-1 If a(j)>a(j+1)Then t=a(j):a(j)=a(j+1):a(j+1)=t Next i For i=Step 2 t=a(i):j=i-1 Do While t<a(j) a(j+1)=a(j):j=j-1 Loop a(j+1)=t Next i
個。 (2)小李根據上述描述,設計了一個統計各段“非重疊塊”、“重疊塊”和剩余段中元素個數的算法。算 法的VB程序如下,請在橫線處填入合適的代碼。 Const n=18,m=6 Dim a(1 To n) As Integer Dim b(1 To 2*m) As Integer 'b(1)、b(2)為第1區間的下限和上限,b(3)、b(4)為第2區間的下限和上限,… Dim c(1 To 2*m+1)As Integer '數組c用于保存統計結果: 'c(1)、c(2)分別存儲第1段“非重疊塊”和“重疊塊”的元素個數, 'c(3)、c(4)分別存儲第2段“非重疊塊”和“重疊塊”的元素個數,… 'c(2m-1)存儲第m段“非重疊塊“元素個數,c(2m)存儲第m段“重疊塊“元素個數(值為0) 'c(2m+1)存儲剩余段元素個數 Private Sub Command1_Click ( ) Dim i As Integer,p As Integer,L As Integer,LL As Integer '讀取n個數據并保存在數組a中,代碼略 '讀取m個區間的下限和上限并保存在數組b中,代碼略 For i=1 To 2*m+1 c(i)=0 Next i i=1:p=1 L=0:LL=0 Do While
If IsIn(i,p) Then If IsIn(i,p+1)Then LL=LL+1 Else
LL=0 End If i=i+1 Else c(2*p-1)=L c(2*p)=LL L=0:LL=0 p=p+1 End If Loop If i<=n Then c(2*p-1)=n-i+1 Else c(2*p-1)=L c(2*p)=LL End If '輸出統計結果,代碼略 End Sub '函數IsIn用來判斷a(i)值是否屬于第p區間 Function IsIn(i As Integer,p As Integer) As Boolean If p>m Then IsIn=False Else If