How to make a bubble sort algorithm?

ArcadeUser 21 Reputation points
2022-02-16T22:58:31+00:00

Here's my current code but I can't figure out how to set the numbers in order!

i = 1
sum = 0

TextWindow.WriteLine("How many numbers would you like to compare?")
L = TextWindow.ReadNumber()

For i = 1 To L
TextWindow.WriteLine("Enter #" + i)
n[i] = TextWindow.ReadNumber()
EndFor

For i = 1 To L
If n[i] > n[i + 1] Then
big = n[i]
If i <> 1 And n[i - 1] < big Then
c = n[i]
n[i] = n[i + 1]
n[i + 1] = c
Else

EndIf
EndIf

EndFor

For i = 1 To L
TextWindow.Write(n[i] + " |")
EndFor

Developer technologies Small BASIC
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. Scout 541 Reputation points
    2022-02-17T10:34:21.157+00:00

    Please use the code sample format Ctrl + K to make the program more understandable.
    The source code should look like the following very nice example.
    Maybe the program will help, otherwise ask again.
    'sorting algorithm demo'
    'compares two O(n^2) algorithms (bubble sort and insertion sort)'
    'with n log^2 n algorithm (shell sort)'
    'Zeven Provincien May 2010'

    rows = 14  
    columns = 14  
    size = 24  
    offsetx = (columns+1) * size  
    offsety = (rows+1) * size  
    GraphicsWindow.Height=rows*size*2+size  
    GraphicsWindow.Width=columns*size*2+size  
    GraphicsWindow.Show()  
    GraphicsWindow.BackgroundColor = "SteelBlue"  
      
    'set up random array'  
    For r = 0 To rows-1  
      For c = 0 To columns-1  
        red = Math.GetRandomNumber(256)-1  
        green = Math.GetRandomNumber(256)-1  
        blue = Math.GetRandomNumber(256)-1  
        'red = 0'  
        green = 0 'comment this line and next to get a more colorful effect'  
        blue = 0  
        GraphicsWindow.BrushColor = GraphicsWindow.GetColorFromRGB(red,green,blue)  
        'GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()'  
        i = r * columns + c  
        boxes[i]["obj"] = Shapes.AddRectangle(size, size)  
        boxes2[i]["obj"] = Shapes.AddRectangle(size,size)  
        boxes3[i]["obj"] = Shapes.AddRectangle(size,size)  
        Shapes.Move(boxes[i]["obj"], c * size, r * size)  
        Shapes.Move(boxes2[i]["obj"],c * size + offsetx, r * size)  
        Shapes.Move(boxes3[i]["obj"],c * size, r * size + offsety)  
        boxes[i]["val"] = blue + green + red  
        boxes2[i]["val"] = blue + green + red  
        boxes3[i]["val"] = blue + green + red  
      EndFor  
    EndFor  
      
    'set up for sorting'  
    arrlen = i  
    GraphicsWindow.BrushColor = "black"  
    title = "Sorting algorithm efficiency comparison"  
    GraphicsWindow.DrawText(offsetx, offsety, title)  
    arrsizetext = "Size of array = " + (arrlen + 1)  
    GraphicsWindow.DrawText(offsetx, offsety+0.5*size, arrsizetext)  
    GraphicsWindow.DrawText(offsetx, offsety+2*size, "Bubble Sort:")  
    start = Clock.ElapsedMilliseconds  
    bubblesort()  
    bubtime = Clock.ElapsedMilliseconds - start  
    bubtext = "Elapsed time = " + bubtime/1000 + " seconds"  
    GraphicsWindow.DrawText(offsetx+100, offsety+2*size, bubtext)  
    GraphicsWindow.DrawText(offsetx, offsety+3*size, "Insertion Sort:")  
    start = Clock.ElapsedMilliseconds  
    insertionsort()  
    instime = Clock.ElapsedMilliseconds - start  
    instext = "Elapsed time = " + instime/1000 + " seconds"  
    GraphicsWindow.DrawText(offsetx+100, offsety+3*size, instext)  
    GraphicsWindow.DrawText(offsetx, offsety+4*size, "Shell Sort:")  
    start = Clock.ElapsedMilliseconds  
    shellsort()  
    shelltime = Clock.ElapsedMilliseconds - start  
    shelltext = "Elapsed time = " + shelltime/1000 + " seconds"  
    GraphicsWindow.DrawText(offsetx+100, offsety+4*size, shelltext)  
    GraphicsWindow.DrawText(offsetx, offsety+6*size, "Program ended.")  
      
    Sub shellsort  
      inc = Math.Round(arrlen/2)  
      While inc > 0  
        For i = inc To arrlen  
          temp = boxes3[i]["val"]  
          tempbox = boxes3[i]["obj"]  
          j = i  
          while (j >= inc) and (boxes3[j-inc]["val"] > temp)  
            boxes3[j]["val"] = boxes3[j-inc]["val"]  
            boxes3[j]["obj"] = boxes3[j-inc]["obj"]  
            r = Math.Floor((j)/columns)  
            c = Math.Remainder(j,columns)  
            Shapes.Move(boxes3[j]["obj"],c * size, r * size + offsety)  
            j = j - inc  
          EndWhile  
          boxes3[j]["val"] = temp  
          boxes3[j]["obj"] = tempbox  
          r = Math.Floor((j)/columns)  
          c = Math.Remainder(j,columns)  
          Shapes.Move(boxes3[j]["obj"],c * size, r * size + offsety)  
        EndFor  
            inc = Math.Round(inc/2.2)  
      Endwhile  
    Endsub  
      
    Sub insertionsort  
      
      For i = 1 to arrlen  
        value = boxes2[i]["val"]  
        boxtemp = boxes2[i]["obj"]  
        j = i - 1  
        done = "false"  
        While done = "false"  
          If boxes2[j]["val"] > value then  
            boxes2[j + 1]["val"] = boxes2[j]["val"]  
            boxes2[j+1]["obj"] = boxes2[j]["obj"]  
            r = Math.Floor((j+1)/columns)  
            c = Math.Remainder(j+1,columns)  
            Shapes.Move(boxes2[j+1]["obj"],c * size + offsetx, r * size)  
            j = j - 1  
            If j < 0 then  
              done = "true"  
            EndIf    
          Else  
            done = "true"  
          EndIf  
        'Program.Delay(10)'     
        EndWhile  
        boxes2[j+1]["val"] = value  
        boxes2[j+1]["obj"] = boxtemp  
        r = Math.Floor((j+1)/columns)  
        c = Math.Remainder(j+1,columns)  
        Shapes.Move(boxes2[j+1]["obj"],c * size + offsetx, r * size)  
      EndFor  
    Endsub  
      
    Sub bubblesort  
      imax = arrlen  
      'highval = boxes[1]["val"]'  
      swapped = "true"  
      While swapped = "true"  
        swapped = "false"  
        For bubi = 1 To imax  
          If boxes[bubi]["val"] < boxes[bubi-1]["val"] Then  
            swap()  
          EndIf  
          'Program.Delay(10)'  
        Endfor  
        imax = imax - 1  
      Endwhile  
    EndSub  
        
    Sub swap  
      boxtemp = boxes[bubi-1]["obj"]  
      boxtempval = boxes[bubi-1]["val"]  
      boxes[bubi-1]["obj"]=boxes[bubi]["obj"]  
      boxes[bubi-1]["val"]=boxes[bubi]["val"]  
      boxes[bubi]["obj"]=boxtemp  
      boxes[bubi]["val"]=boxtempval  
      'highval=boxes[i]["val"]'  
      r = Math.Floor((bubi-1)/columns)  
      c = Math.Remainder(bubi-1,columns)  
      Shapes.Move(boxes[bubi-1]["obj"],c * size, r * size)  
      r = Math.Floor((bubi)/columns)  
      c = Math.Remainder(bubi,columns)  
      Shapes.Move(boxes[bubi]["obj"],c * size, r * size)  
      swapped = "true"  
    Endsub  
    

    175387-sortalgo.jpg

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.