冒泡排序在某一遍加工过程中没有数据交换时,说明数据已经有序,优化程序段如下 
 Dim i As Integer, j As Integer, t As Integer 
 Dim flag As Boolean   'flag标记是否发生了交换操作 
 i = 1 
 For i = 1 To 4 
     flag = False 
     For j = 5 To i + 1 Step -1 
         If a(j) > a(j - 1) Then 
             t = a(j): a(j) = a(j - 1): a(j - 1) = t 
             flag = True 
         End If 
    Next j 
    If Not flag Then Exit For 
 Next i 
 数组元素a(1)到a(5)的值依次为“48,36,24,97,77”  ,经过该程序段“加工”后,变量i的值是( )
 
某程序代码如下: 
 Const n = 5 
 Dim a(1 To n) As Integer 
 Private Sub Command1_Click() 
     Dim i As Integer, j As Integer, t As Integer 
     For i = n To 2 Step -1 
         For j = 1 To i - 1 
             If a(j) > a(j + 1) Then t = a(j): a(j) = a(j + 1): a(j + 1) = t 
         Next j 
     Next i 
 End Sub 
 (1)若排序前数组元素a(1)到a(5)分别是“23,86,98,65,2”,则单击按钮Command1后,数组元素a(1)到a(5)分别是_______________。 
 (2)题目代码采用了双重For循环嵌套结构,你能否将外层循环改成do循环结构,写出对应的代码。