Merge pull request #11 from bradleyjkemp/master

Standardise file naming convention
This commit is contained in:
Chetan Kaushik 2017-10-11 19:52:33 +05:30 коммит произвёл GitHub
Родитель 89ce82b75f d996ca8e89
Коммит 0217421e4f
10 изменённых файлов: 136 добавлений и 0 удалений

86
other/prime_numbers.go Normal file
Просмотреть файл

@ -0,0 +1,86 @@
package main
import (
"fmt"
"math"
"os"
"strconv"
"github.com/douglasmakey/golang-algorithms-/utils"
"time"
)
// Define struct
type numberResult struct {
number int64
isPrime bool
}
// Define functions
// isPrime: validate N number is prime
func isPrime(n int64) bool {
var i, limit int64
if n <= 1 {
return false
}
if n == 2 {
return true
}
if math.Mod(float64(n), 2) == 0 {
return false
}
limit = int64(math.Ceil(math.Sqrt(float64(n))))
for i = 3; i <= limit; i += 2 {
if math.Mod(float64(n), float64(i)) == 0 {
return false
}
}
return true
}
// createNrAndValidate: Receive number and validate if is prime, send channel this same
func createNrAndValidate(n int64, c chan numberResult) {
result := new(numberResult)
result.number = n
result.isPrime = isPrime(n)
c <- *result
}
func initGoCalculations(min int64, max int64, c chan numberResult) {
var i int64
for i = min; i <= max; i++ {
go createNrAndValidate(i, c)
}
}
func primesInRange(min int64, max int64) (primeArr []int64) {
defer utils.TimeTrack(time.Now(), "primesInRange")
// Create channels and defer close
c := make(chan numberResult)
defer close(c)
// Execute N goroutines in range number
go initGoCalculations(min, max, c)
for i := min; i <= max; i++ {
// Receive numberResult
r := <-c
if r.isPrime {
primeArr = append(primeArr, r.number)
}
}
return
}
func main() {
// Receive arguments min max
min, _ := strconv.ParseInt(os.Args[1], 10, 64)
max, _ := strconv.ParseInt(os.Args[2], 10, 64)
fmt.Println(primesInRange(min, max))
}

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

21
sorts/insertion_sort.go Normal file
Просмотреть файл

@ -0,0 +1,21 @@
package main
import "fmt"
func main() {
arr:= [9]int{2,1,4,3,5,9,7,6,8}
for out:=1; out<len(arr); out++{
temp:=arr[out]
in := out
for;in>0 && arr[in-1]>=temp;in--{
arr[in] = arr[in-1]
}
arr[in] = temp
}
for sortedvals:= range arr{
fmt.Println(sortedvals)
}
}

Просмотреть файл

Просмотреть файл

29
sorts/selection_sort.go Normal file
Просмотреть файл

@ -0,0 +1,29 @@
package main
import "fmt"
func main() {
arr := [5]int{11, 12, 31, 4, 1}
fmt.Println("Initial array is:", arr)
fmt.Println("")
var min int = 0
var tmp int = 0
for i := 0; i < len(arr); i++ {
min = i
for j := i + 1; j < len(arr); j++ {
if arr[j] < arr[min] {
min = j
}
}
tmp = arr[i]
arr[i] = arr[min]
arr[min] = tmp
}
fmt.Println("Sorted array: ", arr)
}

Просмотреть файл