1. Algorithms - Merge Sort

Merge Sort Code: using merge sort and merge method recursively to sort/merge an unsorted list
package main

import (
    "fmt"
)

func mergeSort(list []int) []int {
    // If list only have 1 number or none, return it.
    if len(list) < 2 {
        return list
    }

    // Split recursion
    left := mergeSort(list[:len(list)/2])
    right := mergeSort(list[len(list)/2:])
    return merge(left, right)
}

func merge(left, right []int) []int {
    answer := []int{}
    leftCount := 0
    rightCount := 0

    for leftCount < len(left) && rightCount < len(right) {
        if left[leftCount] < right[rightCount] {
            answer = append(answer, left[leftCount])
            leftCount++
        } else {
            answer = append(answer, right[rightCount])
            rightCount++
        }
    }

    for ; leftCount < len(left); leftCount++ {
        answer = append(answer, left[leftCount])
    }

    for ; rightCount < len(right); rightCount++ {
        answer = append(answer, right[rightCount])
    }

    return answer
}

func main() {
    unsortedArray := []int{8, 2, 5, 3, 4, 7, 6, 1}
    sortedArray := mergeSort(unsortedArray)

    fmt.Println(sortedArray)
}


Merge Code: combining two sorted lists
package main

import "fmt"

func merge(left, right []int) []int {

    leftCount := 0
    rightCount := 0
    answer := []int{}

    for leftCount < len(left) && rightCount < len(right) {
        if left[leftCount] < right[rightCount] {
            answer = append(answer, left[leftCount])
            leftCount++
        } else {
            answer = append(answer, right[rightCount])
            rightCount++
        }
    }

    for ; leftCount < len(left); leftCount++ {
        answer = append(answer, left[leftCount])
    }

    for ; rightCount < len(right); rightCount++ {
        answer = append(answer, right[rightCount])
    }

    return answer

}

func main() {
    x := []int{1, 2, 3}
    y := []int{5, 6, 8}

    merged := merge(x, y)
    fmt.Println(merged)
}

Comments

Popular posts from this blog

2. FreeCodeCamp - Dynamic Programming - Learn to Solve Algorithmic Problems & Coding Challenges

20. Data Analytics - Analyze Data to Answer Questions - Week 1

3. Algorithms - Selection Sort