Skip to content

A library containing Golang implementations of the most famous basic computer science algorithms for new students learning coding, including how to benchmark the execution time for every algorithm.

Notifications You must be signed in to change notification settings

rodainahassan/go-algorithms

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-algorithms

Array Utilities

  • Searching

    • Linear Search
    • Binary Search
  • Sorting

    • Bubble Sort
    • Selection Sort
    • Double Selection Sort
    • Insertion Sort

String Manipulation

  • String Reverse
  • Palindrome Check

Usage Example

package main

import (
	"fmt"
	"strconv"

	"github.com/omardoma/go-algorithms/arrayutil/search"
	"github.com/omardoma/go-algorithms/arrayutil/sort"
	"github.com/omardoma/go-algorithms/benchmark"
	"github.com/omardoma/go-algorithms/math"
	"github.com/omardoma/go-algorithms/stringutil"
)

func main() {
	var arr []int
	var estimateExecTime func()

	arr = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}
	fmt.Println("Sorted Array:", arr)
	fmt.Println("\nBinary Search")
	estimateExecTime = benchmark.Elapsed("Binary Search")
	fmt.Println("Key Index: ", search.BinarySearch(10, arr))
	estimateExecTime()

	arr = []int{3, 1, 4, 2, 6, 5, 8, 7, 10, 9}
	fmt.Println("\nDouble Selection Sort")
	estimateExecTime = benchmark.Elapsed("Double Selection Sort")
	sort.DoubleSelectionSort(arr)
	fmt.Println(arr)
	estimateExecTime()

	str := "Omar loves Tuffy so much"
	fmt.Println("\nReverse String")
	estimateExecTime = benchmark.Elapsed("Reverse String")
	fmt.Println(stringutil.Reverse(str))
	estimateExecTime()

	n := 10
	fmt.Println("\nMemoized Fibonacci")
	estimateExecTime = benchmark.Elapsed("Memoized Fibonacci")
	fmt.Println("Fibonacci of " + strconv.Itoa(n) + ": " + strconv.Itoa(math.FibonacciMemo(n)))
	estimateExecTime()
}

© 2017 Omar Doma

About

A library containing Golang implementations of the most famous basic computer science algorithms for new students learning coding, including how to benchmark the execution time for every algorithm.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%