Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi All,
I have a bubble sort failing when "a" seems to compare greater then "B" in a binary text compare. There are notes in the bubble sort loop below. Other more 'complicated' data tests well, also in the notes. Help is appreciated. Thanks, Neal Zimm Sub zBubble_Sort() Dim CompareHow As VbCompareMethod Dim Ix As Long Dim Jx As Long Dim Lo As Long, Hi As Long Dim KeyAy As Variant Dim sHold As String Dim sInput As String Dim sOutput As String ' All binary compares ' KeyAy = Array("a", "A") 'good, result is Aa ' KeyAy = Array("b", "B") 'good, result is Bb ' KeyAy = Array("b", "a", "A") 'good, result = Aab ' KeyAy = Array("B", "a", "A") 'NOPE, result = ABa CompareHow = vbBinaryCompare ''CompareHow = vbTextCompare KeyAy = Array("b", "a", "A", "B") 'crap, result = ABab expect AaBb ?? GoSub SortTest 'the above has a problem, see sort. Bummer is that 'the data below works as expected. KeyAy = Array("z i m", "z i M", "z I m", "z I M", "Z I m", "Z I M") GoSub SortTest For Ix = Lo To Hi sOutput = sOutput & KeyAy(Ix) & vbCr Next Ix MsgBox sOutput Exit Sub SortTest: Lo = LBound(KeyAy) Hi = UBound(KeyAy) For Ix = Lo To Hi sInput = sInput & KeyAy(Ix) Next Ix 'sort ascending For Ix = Lo To (Hi - 1) For Jx = (Ix + 1) To Hi 'The failure is @ Ix=2 "a", it compares greater ' than Jx=4 of "B" WHY ?? If StrComp(KeyAy(Ix), KeyAy(Jx), CompareHow) = 1 Then sHold = KeyAy(Jx) KeyAy(Jx) = KeyAy(Ix) KeyAy(Ix) = sHold End If Next Jx Next Ix For Ix = Lo To Hi sOutput = sOutput & KeyAy(Ix) Next Ix MsgBox sInput & vbCr & vbCr & sOutput sInput = "" sOutput = "" Return End Sub -- Neal Z |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
StrComp | Excel Programming | |||
binary sort? | Excel Programming | |||
Sort data failure | Excel Programming | |||
Calling Bubble Sort Function | Excel Programming |