golang about 04_quicksort (#43)

* recursion_Golang

* go_fmt

* selection_sort_Golang

* rm-golang

* selection_sort_Golang

* selection_sort_Golang

* selection_sort_Golang

* dynamic_golang

* golang 05_hash_tables 02_check_voter.go

* golang 05_hash_tables 01_price_of_groceries

* add 01_loop_sum in 04_quicksort

* 02_recursive_sum in 04_quicksort

* 03_recursive_count in 04_quicksort

* 04_recursive_max in 04_quicksort

* 05_quicksort in 04_quicksort
This commit is contained in:
Seoungtae Kim
2017-12-02 09:33:44 +09:00
committed by Aditya Bhargava
parent cdec985db1
commit 3499ab656a
5 changed files with 94 additions and 0 deletions

View File

@@ -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}))
}

View File

@@ -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}))
}

View File

@@ -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}))
}

View File

@@ -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}))
}

View File

@@ -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}))
}