②固定两队字母中最小字母在各队中的位置;
③将两队其余字母按从小到大的顺序排在各自最小字母的两边。大写字母队列先从最小字母右边排队,排到最后位置再从最小字母左边开始排,直到第一个位置为止。同理,小写字母队列先从左边开始排队,再排右边。过程如图1所示:
编写VB程序,实现字母排队功能:在文本框Text1中输入待排字母串后,单击“排队”按钮Comand1,在列表框List1中显示排队结果。程序运行界面如图2所示。
请回答下列问题:
Dim flag(1 To 52) As Boolean 'flag数组初值为False
Private Sub Command1_Click()
Dim su As String, sd As String, ch As String 'su,sd分别存储大小写字母队
Dim i As Integer, n As Integer
Dim ku As Integer, kd As Integer
s = Text1.Text:n =Len(s)
For i=1 To n
ch =
If ch >="A" And ch <="Z" Then su= su+ ch
If ch>="a"Andch<="z"Thensd=sd+ch
Next i
ku = search(su, 0)
kd = search(sd, 6
su=“”:sd=“”
For i=1 To 52
If flag(i) And i<=26 Then su=su+Chr(i+64)
If flag(i) And i>26 Then
Next i
List1.AddItem sort(su,ku, 1)
List1.AddItem sort(sd,kd, -1)
End Sub
Function search(s As String, k As Integer) As Integer '确定字母队列并查找最小元素位置
Min = Mid(s,1, 1)
flag(Asc(Min) - 64 - k) = True
mini = 1
For i=2 To Len(s)
ch = Mid(s, i,1)
If ch<Min Then mini=i:Min=ch
Next i
search = mini
End Function
Function sort(s As String, wz As Integer, k As Integer) As String '排队
nx = Len(s)
sort = Mid(s, 1,1)
i=2
nc=1
Do While nc <= 2
For j=wz+k To nx^((1 +k) \ 2) Step k
If k= 1 Then
sort = sort + Mid(s,i,1)
Else
sort = Mid(s, i, 1) + sort
End If
i=i+1
Next j
nc=nc+1
Loop
End Function