diff --git a/04_quicksort/golang/01_loop_sum.go b/04_quicksort/golang/01_loop_sum.go new file mode 100644 index 0000000..eb79a99 --- /dev/null +++ b/04_quicksort/golang/01_loop_sum.go @@ -0,0 +1,15 @@ +package main + +import "fmt" + +func sum(arr []int) int { + total := 0 + for _, num := range arr { + total += num + } + return total +} + +func main() { + fmt.Println(sum([]int{1, 2, 3, 4})) +} diff --git a/04_quicksort/golang/02_Recursive_sum.go b/04_quicksort/golang/02_Recursive_sum.go new file mode 100644 index 0000000..6f02508 --- /dev/null +++ b/04_quicksort/golang/02_Recursive_sum.go @@ -0,0 +1,14 @@ +package main + +import "fmt" + +func sum(arr []int) int { + if len(arr) == 0 { + return 0 + } + return arr[0] + sum(arr[1:]) +} + +func main() { + fmt.Println(sum([]int{1, 2, 3, 4})) +} diff --git a/04_quicksort/golang/03_recursive_count.go b/04_quicksort/golang/03_recursive_count.go new file mode 100644 index 0000000..0fc608b --- /dev/null +++ b/04_quicksort/golang/03_recursive_count.go @@ -0,0 +1,14 @@ +package main + +import "fmt" + +func count(list []int) int { + if len(list) == 0 { + return 0 + } + return 1 + count(list[1:]) +} + +func main() { + fmt.Println(count([]int{0, 1, 2, 3, 4, 5})) +} diff --git a/04_quicksort/golang/04_recursive_max.go b/04_quicksort/golang/04_recursive_max.go new file mode 100644 index 0000000..dd98eca --- /dev/null +++ b/04_quicksort/golang/04_recursive_max.go @@ -0,0 +1,22 @@ +package main + +import "fmt" + +func max(list []int) int { + if len(list) == 2 { + if list[0] > list[1] { + return list[0] + } + return list[1] + } + + subMax := max(list[1:]) + if list[0] > subMax { + return list[0] + } + return subMax +} + +func main() { + fmt.Println(max([]int{1, 5, 10, 25, 16, 1})) +} diff --git a/04_quicksort/golang/05_quicksort.go b/04_quicksort/golang/05_quicksort.go new file mode 100644 index 0000000..80a692d --- /dev/null +++ b/04_quicksort/golang/05_quicksort.go @@ -0,0 +1,29 @@ +package main + +import "fmt" + +func quicksort(list []int) []int { + if len(list) < 2 { + return list + } else { + pivot := list[0] + + var less = []int{} + var greater = []int{} + for _, num := range list[1:] { + if pivot > num { + less = append(less, num) + } else { + greater = append(greater, num) + } + } + + less = append(quicksort(less), pivot) + greater = quicksort(greater) + return append(less, greater...) + } +} + +func main() { + fmt.Println(quicksort([]int{10, 5, 2, 3})) +}