Bubble sort in C/AL
Views (2181)
Sorting.. Yes, I could have used Record.SETCURRENTKEY() if I am retrieving values from a table. But I had to sort some decimal/integer variables which I used while running a report.
I was thinking what if I use one of the old school sorting algorithms, and then I decided to implement Bubble Sort in C/AL. You may argue that the complexity of a Bubble Sort is meh.. but personally, I like this algorithm because it is quite easy to implement.
LOCAL BubbleSort()
//Init integer array
rankArray[1] := 25;
rankArray[2] := 24;
rankArray[3] := 30;
rankArray[4] := 28;
rankArray[5] := 39;
rankArray[6] := 27;
rankArray[7] := 22;
rankArray[8] := 25;
rankArray[9] := 34;
rankArray[10] := 35;
numLength := ARRAYLEN(rankArray);
flag := TRUE;
MESSAGE('Before Sorting: ' + FORMAT(rankArray[1]) + ',' + FORMAT(rankArray[2]) + ',' + FORMAT(rankArray[3]) + ',' + FORMAT(rankArray[4]) + ',' + FORMAT(rankArray[5]) + ',' + FORMAT(rankArray[6]) + ',' + FORMAT(rankArray[7]) + ',' + FORMAT(rankArray[8]) + ',' + FORMAT(rankArray[9]) + ',' + FORMAT(rankArray[10]));
//Bubble Sort Start
FOR i := 1 TO numLength - 1 DO
BEGIN
flag := FALSE;
FOR j := 1 TO numLength - 1 DO
BEGIN
IF rankArray[j] > rankArray[j + 1] THEN
BEGIN
temp := rankArray[j + 1];
rankArray[j + 1] := rankArray[j];
rankArray[j] := temp;
flag := TRUE;
END;
END;
END;
//Bubble Sort End
MESSAGE('After Sorting: ' + FORMAT(rankArray[1]) + ',' + FORMAT(rankArray[2]) + ',' + FORMAT(rankArray[3]) + ',' + FORMAT(rankArray[4]) + ',' + FORMAT(rankArray[5]) + ',' + FORMAT(rankArray[6]) + ',' + FORMAT(rankArray[7]) + ',' + FORMAT(rankArray[8]) + ',' + FORMAT(rankArray[9]) + ',' + FORMAT(rankArray[10]));
rankArray’s dimension is 10.
Here are the results.

Before Sorting: 25,24,30,28,39,27,22,25,34,35

After Sorting: 22,24,25,25,27,28,30,34,35,39
Fun fact:
Here is the visualization of how the Bubble Sort Algorithm works.
This was originally posted here.

Like
Report
*This post is locked for comments