Go – Bubble Sort in Golang

Hello everyone, in this tutorial, we will learn how to write a simple Bubble Sort in Golang programming language. This example program has been tested and shared in the same post.

What is Bubble Sort?

The bubble sort is one of the easiest sorting algorithm that works by iteratively swapping an elements if they are in the wrong order. The below example will give you an idea about swapping based on the iteration.

Bubble Sort in Golang
[4, 2, 1, 5, 3]
[4, 2, 1, 5, 3]
[4, 2, 1, 5, 3]     -> Iteration 1
[5, 2, 1, 4, 3]
[5, 2, 1, 4, 3]


[2, 5, 1, 4, 3]
[2, 5, 1, 4, 3]
[2, 5, 1, 4, 3]     -> Iteration 2
[2, 5, 1, 4, 3]
[2, 5, 1, 4, 3]


[1, 5, 2, 4, 3]
[1, 2, 5, 4, 3]
[1, 2, 5, 4, 3]     -> Iteration 3
[1, 2, 5, 4, 3]
[1, 2, 5, 4, 3]


[1, 2, 5, 4, 3]
[1, 2, 5, 4, 3]
[1, 2, 4, 5, 3]     -> Iteration 4
[1, 2, 4, 5, 3]
[1, 2, 4, 5, 3]


[1, 2, 4, 5, 3]
[1, 2, 4, 5, 3]
[1, 2, 3, 5, 4]     -> Iteration 5
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]

Function – Bubble Sort in Golang

The below function is responsible to sort a given numbers array by using Bubble Sort algorithm.

// function to sort number using Bubblesort Algorithm
func bubbleSort(numbers []int) []int {
	if numbers != nil && len(numbers) > 0 {
		for i := 0; i < len(numbers); i++ {
			for j := 0; j < len(numbers); j++ {
				if numbers[i] < numbers[j] {
					// swapping the numbers
					temp := numbers[i]
					numbers[i] = numbers[j]
					numbers[j] = temp
				}
			}
		}
	} else {
		fmt.Println("Empty or Null Array")
	}
	return numbers
}

Full Example

package main

import "fmt"

// function to sort number using Bubblesort Algorithm
func bubbleSort(numbers []int) []int {
	if numbers != nil && len(numbers) > 0 {
		for i := 0; i < len(numbers); i++ {
			for j := 0; j < len(numbers); j++ {
				if numbers[i] < numbers[j] {
					// swapping the numbers
					temp := numbers[i]
					numbers[i] = numbers[j]
					numbers[j] = temp
				}
			}
		}
	} else {
		fmt.Println("Empty or Null Array")
	}
	return numbers
}

// main function
func main() {

	fmt.Println("Bubble Sort \n")

	// creating an integer array with values
	numbers := []int{4, 2, 1, 5, 3}

	fmt.Println("Before Sorting:", numbers)

	// calling the bubbleSort function
	numbers = bubbleSort(numbers)

	fmt.Println("\nAfter Sorting:", numbers)
}



Output

Bubble Sort 

Before Sorting: [4 2 1 5 3]

After Sorting: [1 2 3 4 5]

References