Changes

Data Sorting in VB6

2,935 bytes added, 16:08, 29 January 2008
The following lines were added (+) and removed (-):
=== bubblesort ===  <nowiki>' min and max are the minimum and maximum indexes</nowiki>  <nowiki>' of the items that might still be out of order.</nowiki>  <nowiki>Sub BubbleSort (List() As Long, ByVal min As Integer, _</nowiki>  <nowiki>    ByVal max As Integer)</nowiki>  <nowiki>Dim last_swap As Integer</nowiki>  <nowiki>Dim i As Integer</nowiki>  <nowiki>Dim j As Integer</nowiki>  <nowiki>Dim tmp As Long</nowiki>  <nowiki></nowiki>  <nowiki>    ' Repeat until we are done.</nowiki>  <nowiki>    Do While min < max</nowiki>  <nowiki>        ' Bubble up.</nowiki>  <nowiki>        last_swap = min - 1</nowiki>  <nowiki>        ' For i = min + 1 To max</nowiki>  <nowiki>        i = min + 1</nowiki>  <nowiki>        Do While i <= max</nowiki>  <nowiki>            ' Find a bubble.</nowiki>  <nowiki>            If List(i - 1) > List(i) Then</nowiki>  <nowiki>                ' See where to drop the bubble.</nowiki>  <nowiki>                tmp = List(i - 1)</nowiki>  <nowiki>                j = i</nowiki>  <nowiki>                Do</nowiki>  <nowiki>                    List(j - 1) = List(j)</nowiki>  <nowiki>                    j = j + 1</nowiki>  <nowiki>                    If j > max Then Exit Do</nowiki>  <nowiki>                Loop While List(j) < tmp</nowiki>  <nowiki>                List(j - 1) = tmp</nowiki>  <nowiki>                last_swap = j - 1</nowiki>  <nowiki>                i = j + 1</nowiki>  <nowiki>            Else</nowiki>  <nowiki>                i = i + 1</nowiki>  <nowiki>            End If</nowiki>  <nowiki>        Loop</nowiki>  <nowiki>        ' Update max.</nowiki>  <nowiki>        max = last_swap - 1</nowiki>  <nowiki></nowiki>  <nowiki>        ' Bubble down.</nowiki>  <nowiki>        last_swap = max + 1</nowiki>  <nowiki>        ' For i = max - 1 To min Step -1</nowiki>  <nowiki>        i = max - 1</nowiki>  <nowiki>        Do While i >= min</nowiki>  <nowiki>            ' Find a bubble.</nowiki>  <nowiki>            If List(i + 1) < List(i) Then</nowiki>  <nowiki>                ' See where to drop the bubble.</nowiki>  <nowiki>                tmp = List(i + 1)</nowiki>  <nowiki>                j = i</nowiki>  <nowiki>                Do</nowiki>  <nowiki>                    List(j + 1) = List(j)</nowiki>  <nowiki>                    j = j - 1</nowiki>  <nowiki>                    If j < min Then Exit Do</nowiki>  <nowiki>                Loop While List(j) > tmp</nowiki>  <nowiki>                List(j + 1) = tmp</nowiki>  <nowiki>                last_swap = j + 1</nowiki>  <nowiki>                i = j - 1</nowiki>  <nowiki>            Else</nowiki>  <nowiki>                i = i - 1</nowiki>  <nowiki>            End If</nowiki>  <nowiki>        Loop</nowiki>  <nowiki>        ' Update min.</nowiki>  <nowiki>        min = last_swap + 1</nowiki>  <nowiki>    Loop</nowiki>  <nowiki>End Sub</nowiki>
Bureaucrat, administrator
16,192
edits