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 PROCESS
SORTPASS
SUB1 = 1
SUB2 = 2
FLIPCT = 0
DO SORTLOOP UNTIL SUB2 > ENDPT
SUBTRACT 1 FROM ENDPT
END SORTPASS
SORTLOOP
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.