【加试题】有一组正整数,要求对其中的数据进行排列,
排列后奇数在前, 偶数在后。其中最后一个数据排到奇数与偶数交接处;自前到后的第一个偶数排到最后一个位置,空出的位置排列自后向前的第一个奇数,依此类推。排序示例如下。
实现上述功能的 VB 程序如下,但加框处代码有错,请改正。 Const n = 10 Dim a(1 To n) As Integer Private Sub Command1_Click() Dim i As Integer, j As Integer Dim temp As Integer, flag As Boolean '读取一组正整数,存储在数组a中,代码略 i = 1: j = n temp = a(j): flag = True Do While i < j If flag Then If a(i) Mod 2 = 0 Then a(j) = a(i) j=j-1 flag=Not flag Else '⑴ End If Else If a(j) Mod 2 = 1 Then a(i)=a(j) flag=Not flag Else j=j-1 End If End If Loop '⑵ '依次输出排序后的数据,代码略。 End Sub ⑴ ⑵
答案:【1】i=i+1【2】a(i)=temp或a(j)=temp或a((i+j)\2)=temp或a((i+j)/2)=temp