Manage Learn to apply best practices and optimize your operations.

A 2-D Bubble Sort Subroutine

This Content Component encountered an error

Sort routines for a single list of values have been around for awhile, but
recently I needed to sort a list of form names and keep the corresponding list
of form aliases correctly associated.

I modified a Bubble Sort routine I've used in the past to input two variant
arrays, sort the first in ascending order, and reorder the second array to
correspond with each item's original first-array partner.
' Paste the Sub into the Declarations section of a form, button, etc.

Sub Bubble_Sort2 (ary1 As Variant, ary2 As Variant)

' Returns sorted array for ary1 and corresponding values for ary2
' based on a complexity of O(n^2) using a bubble sort
Dim top1, top2, bot1, bot2, cur, cur2 As Integer
Dim tmp1, tmp2 As Variant
If Not Isarray(ary1) Then Print "SORT: First variant not an array" :Exit Sub
If Not Isarray(ary2) Then Print "SORT: Second variant not an array" :Exit Sub
top1=Ubound (ary1)
top2=Ubound (ary2)
bot1=Lbound (ary1)
bot2=Lbound (ary2)
If top1=bot1 Then Print "SORT: Single-value array" : Exit Sub
If (top1-bot1)<>(top2-bot2) Then Print "SORT: Arrays not same size" : Exit Sub
For cur=bot1 To top1
cur2=cur
Do While cur2 > bot1 'bubble up
If (ary1(cur2) > ary1(cur2-1)) Then
Exit Do
Else
'swap
tmp1=ary1(cur2)
tmp2=ary2(cur2)
ary1(cur2)=ary1(cur2-1)
ary2(cur2)=ary2(cur2-1)
ary1(cur2-1)=tmp1
ary2(cur2-1)=tmp2
End If
cur2=cur2-1
Loop
Next
End Sub

' A button action on a form with four multi-value text fields; Input_1,
Input_2, Output_1 and Output_2
' Enter several unsorted values in Input_1 and an identical number of values
in Input_2, and click the button.
' The 1st set of values will be sorted and placed into Output_1 and the 2nd
set will be placed into Output_2
' in the order they now correspond with their original counterparts from the
1st set.

Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim ui As NotesUIDocument
Dim doc As NotesDocument
Dim itm1, itm2 As NotesItem
Dim v1, v2 As Variant
Dim ary() As Variant
Set ui = ws.CurrentDocument
Set doc = ui.Document
Set itm1 = doc.GetFirstItem("Input_1")
Set itm2 = doc.GetFirstItem("Input_2")
ct%=0
v1 = itm1.Values
v2 = itm2.Values
Call Bubble_Sort2 (v1, v2)
doc.Output_1 = v1
doc.Output_2 = v2
End Sub

This was last published in November 2000

Start the conversation

Send me notifications when other members comment.

SearchWindowsServer

• Future of Windows might involve significant weight loss

The influence of containerized applications could sway Microsoft to introduce more far-reaching refinements to Windows Server and...

IT workers need to learn how to ride the wave of innovation and master these five technologies related to Windows Server that can...

• Options for server management tools expand to meet IT needs

Not only do admins have to contend with a mix of server OSes, there are diverse scenarios to complicate their management. Learn ...

Search400

• iSeries tutorials

Search400.com's tutorials provide in-depth information on the iSeries. Our iSeries tutorials address areas you need to know about...

When upgrading to V6R1, make sure your software will be supported, your programs will function and the correct PTFs have been ...

• Connecting multiple iSeries systems through DDM

Working with databases over multiple iSeries systems can be simple when remotely connecting logical partitions with distributed ...

SearchDataCenter

• IBM Power9 servers seek market inroads to AI, cloud

IBM follows up its first Power9 server with a raft of systems designed to appeal to a wider array of markets -- most notably, AI ...

• Evaluate read-intensive and write-intensive SSD use cases

Consider write wear, performance and other factors when choosing between read-intensive, write-intensive and mixed-use ...

• Some hyper-converged infrastructure use cases pose pitfalls

Hyper-converged infrastructure adoption is skyrocketing, but that doesn't mean that the technology is the best choice for every ...

SearchExchange

Everyone wants a smooth patching process, but things can fall apart despite everyone's best efforts. Develop a solid recovery ...

• New Office 365 administrators grapple with challenges

More enterprises mulling the move to Office 365 should factor in the adjustments necessary to get the IT department up to speed ...

• Curb stress from Exchange Server updates with these pointers

Some administrators let the memories of a bad patch linger and put off Exchange updates. Here are some tips to make this ...

SearchContentManagement

• Content management in the cloud a main theme in 2018

The future of content management resides in the cloud and with AI, as several 2018 conferences will assure you.

• Six things to know about today's SharePoint implementations

As companies migrate their on-premises Microsoft SharePoint sites to the cloud, here are some things they should know about the ...

• Upgrades for the SharePoint Online portal

As more organizations migrate SharePoint sites to the cloud, Microsoft has increased at-a-glance dashboard data and analytics to ...

Close