Pseudocode for Bubble Sort: PROCESS Initialize FLIP-CT at something other than 0 so SORTPASS will be entered Initialize ENDPT to the last element in the array DO SORTPASS UNTIL ENDPT < 2 OR FLIPCT = 0 Show results of sort …END PROCESSSORTPASS SUB1 = 1 SUB2 = 2 FLIPCT = 0 DO SORTLOOP UNTIL SUB2 > ENDPT SUBTRACT 1 FROM ENDPTEND SORTPASSSORTLOOP IF ELEM(SUB1) > ELEM(sub2) HOLDSLOT = ELEM(SUB1) ELEM(SUB1) = ELEM(SUB2) ELEM(SUB2) = HOLDSLOT FLIPCT = FLIPCT + 1 ENDIF SUB1 = SUB1 + 1 SUB2 = SUB2 + 1 END SORTLOOP Bubble Sort written in COBOL: IDENTIFICATION DIVISION. PROGRAM-ID. BUBBLE.AUTHOR. GROCER.
ENVIRONMENT DIVISION.DATA DIVISION.
WORKING-STORAGE SECTION. 01 TABLE-IN PIC 9(5) VALUE 56234. 01 RDF-TABLE-IN REDEFINES TABLE-IN. 05 TAB-SLOT PIC 9 OCCURS 5 TIMES. 01 SUB1 PIC 9 VALUE 0. 01 SUB2 PIC 9 VALUE 0. 01 END-PT PIC 9 VALUE 5. 01 FLIP-CT PIC 9 VALUE 9. 01 HOLD-SLOT PIC 9 VALUE 0. 01 RESPOND PIC X VALUE SPACES. PROCEDURE DIVISION. MAINLINE. PERFORM B-100-PROCESS. STOP RUN. B-100-PROCESS. PERFORM B-200-SORT UNTIL END-PT = 1 OR FLIP-CT = 0. DISPLAY TABLE-IN. ACCEPT RESPOND. B-200-SORT. MOVE 1 TO SUB1. MOVE 2 TO SUB2. MOVE 0 TO FLIP-CT PERFORM B-300-PASS UNTIL SUB2 > END-PT. SUBTRACT 1 FROM END-PT. B-300-PASS. IF TAB-SLOT (SUB1) > TAB-SLOT (SUB2) MOVE TAB-SLOT (SUB1) TO HOLD-SLOT MOVE TAB-SLOT (SUB2) TO TAB-SLOT (SUB1) MOVE HOLD-SLOT TO TAB-SLOT (SUB2) ADD 1 TO FLIP-CT. ADD 1 TO SUB1. ADD 1 TO SUB2.
Bubble Sort in COBOL with embedded pass in code:
IDENTIFICATION DIVISION. PROGRAM-ID. BUBBLE.AUTHOR. GROCER.
ENVIRONMENT DIVISION.DATA DIVISION.
WORKING-STORAGE SECTION. 01 TABLE-IN PIC 9(5) VALUE 56234. 01 RDF-TABLE-IN REDEFINES TABLE-IN. 05 TAB-SLOT PIC 9 OCCURS 5 TIMES. 01 SUB1 PIC 9 VALUE 0. 01 SUB2 PIC 9 VALUE 0. 01 END-PT PIC 9 VALUE 5. 01 FLIP-CT PIC 9 VALUE 9. 01 HOLD-SLOT PIC 9 VALUE 0. 01 RESPOND PIC X VALUE SPACES. PROCEDURE DIVISION. MAINLINE. PERFORM B-100-PROCESS. STOP RUN. B-100-PROCESS. PERFORM UNTIL END-PT = 1 OR FLIP-CT = 0 MOVE 1 TO SUB1 MOVE 2 TO SUB2 MOVE 0 TO FLIP-CT PERFORM UNTIL SUB2 > END-PT IF TAB-SLOT (SUB1) > TAB-SLOT (SUB2) MOVE TAB-SLOT (SUB1) TO HOLD-SLOT MOVE TAB-SLOT (SUB2) TO TAB-SLOT (SUB1) MOVE HOLD-SLOT TO TAB-SLOT (SUB2) ADD 1 TO FLIP-CT END-IF ADD 1 TO SUB1 ADD 1 TO SUB2 END-PERFORM SUBTRACT 1 FROM END-PT END-PERFORM DISPLAY TABLE-IN. ACCEPT RESPOND.
Bubble Sort written in Visual Basic:
Option Explicit
Private Sub cmdClear_Click()
Dim ct As
Integer
For ct =
0 To 4
txtNum(ct) = ""
Next ct
txtNum(0).SetFocus
End Sub
Private Sub cmdExit_Click()
End
End Sub
Private Sub cmdSort_Click()
Dim endPt
As Integer, flipCt As Integer
Dim sub1
As Integer, sub2 As Integer
Dim
holdSlot As String
endPt = 4
flipCt =
9
Do Until
endPt = 0 Or flipCt = 0
sub1 =
0
sub2 =
1
flipCt
= 0
Do
Until sub2 > endPt
If
Val(txtNum(sub1)) > Val(txtNum(sub2)) Then
holdSlot = txtNum(sub1)
txtNum(sub1) = txtNum(sub2)
txtNum(sub2) = holdSlot
flipCt = flipCt + 1
End If
sub1 = sub1 + 1
sub2 = sub2 + 1
Loop
endPt =
endPt - 1
Loop
End Sub

Note that the textboxes on the form are set up as an
array. The first one is txtNum(0) and
the next one will be textNum(1) followed by textNum(2), txtNum(3) and txtNum(4). In doing the sort, I can use these names.