Сортировка массивов
Пример сортировки массивов со строковыми данными по алфавиту. В строках при
сортировке могут присутствовать цифры.
Платформы: Windows , Linux.
Автор: D.J.Peters, создано в 2007 году
Dim As String TheArray(10) Sub StringArraySort(strings() As String) Dim As Integer l=lbound(Strings) Dim As Integer u=ubound(Strings) Dim As Integer n=u-l Dim As Integer flag,i,j,k,l1,l2 ' nothing to sort I If n<2 Then Return ' optional move empty strings ' to the end of array Do flag=0 For i=l To u-1 j=i+1 If Len(Strings(i))=0 And Len(Strings(j))>0 Then swap Strings(i),Strings(j) flag=-1:Exit For End If Next Loop While Flag For i=l To u If Len(Strings(i))=0 Then u=i-1:Exit For Next n=u-l ' nothing to sort II If n<2 Then Return ' sort by ASCI codes Do flag=0 ' loop over all items For i=l To u-1 j=i+1 l1=len(Strings(i)) l2=len(Strings(j)) If l1>l2 Then swap l1,l2 For k=0 To l1-1 If k Then If strings(i)[k-1]=strings(j)[k-1] Then If strings(i)[k]>strings(j)[k] Then swap Strings(i),Strings(j) flag=1:Exit For End If End If Else If strings(i)[k]>strings(j)[k] Then swap Strings(i),Strings(j) flag=1:Exit For End If End If Next If flag=-1 Then Exit For Next Loop While flag End Sub TheArray(0)="ABCF" TheArray(1)="" TheArray(2)="aBcD" TheArray(3)="2abcD" TheArray(4)="1abcC" TheArray(5)="1ABC" TheArray(6)="ABCD" TheArray(7)="aBcd" TheArray(8)="" TheArray(9)="" TheArray(10)="ABC" For i As integer=0 To 10 ? TheArray(i) Next ? String(20,"=") StringArraySort TheArray(0) For i As integer=0 To 10 If Len(TheArray(i)) Then ? TheArray(i) Next ? String(20,"=") Sleep