From 5a6c4166a8836efded0ef6485317561cf6a44577 Mon Sep 17 00:00:00 2001 From: abrarShariar Date: Fri, 13 Jul 2018 01:42:26 +0600 Subject: [PATCH 1/6] linear search --- searching/linearSearch.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 searching/linearSearch.go diff --git a/searching/linearSearch.go b/searching/linearSearch.go new file mode 100644 index 0000000..018ddb9 --- /dev/null +++ b/searching/linearSearch.go @@ -0,0 +1,28 @@ +package main +import "fmt" + +func search(arr []int, key int) int { + for i := 0; i < len(arr); i++ { + if arr[i] == key { + return i + } + } + return -1 +} + + +func main() { + + searchValue := 100 + arr := []int{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } + fmt.Println(arr) + + found := search(arr, searchValue) + + if found == -1 { + fmt.Println("Key not found") + } else { + fmt.Printf("Key found at position: %d\n", found) + } + +} From 38b23e88391603b780e52c3aa3b1da314d0b7afd Mon Sep 17 00:00:00 2001 From: abrarShariar Date: Fri, 13 Jul 2018 02:17:33 +0600 Subject: [PATCH 2/6] jump search --- searching/jumpSearch.go | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 searching/jumpSearch.go diff --git a/searching/jumpSearch.go b/searching/jumpSearch.go new file mode 100644 index 0000000..4a153d4 --- /dev/null +++ b/searching/jumpSearch.go @@ -0,0 +1,44 @@ +package main +import "fmt" +import "math" + +func jumpSearch(arr []int, key int) int { + + //block size to jump + sz := len(arr) + step := int(math.Sqrt(float64(sz))) + prev := 0 + + //finding the block + for arr[int(math.Min(float64(step), float64(sz))) - 1] < key { + prev = step + step += int(math.Sqrt(float64(sz))) + if prev >= sz { + return -1 + } + } + + //linear search the block + for arr[prev] < key { + prev++ + if prev == int(math.Min(float64(step), float64(sz))) { + return -1 + } + } + + if arr[prev] == key { + return prev + } + return -1 +} + + +func main() { + + arr := []int { 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610 } + key := 55 + + index := jumpSearch(arr, key) + fmt.Println(index) + +} From a8171e48d4b6c471ab5f067201f66162bc9ad51d Mon Sep 17 00:00:00 2001 From: abrarShariar Date: Fri, 13 Jul 2018 02:22:28 +0600 Subject: [PATCH 3/6] updated README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 71e27ef..e38f7fc 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ Algorithms #### Searching * [binary search](https://en.wikipedia.org/wiki/Binary_search_algorithm) + * [linear search](https://en.wikipedia.org/wiki/Linear_search) + * [jump search](https://en.wikipedia.org/wiki/Jump_search) #### Collections @@ -43,7 +45,7 @@ Algorithms #### Numerical * [gcd](https://en.wikipedia.org/wiki/Greatest_common_divisor) - + Contribution ------------ From 2f4f321c2230389dabbdb8c92b73cfbed272b185 Mon Sep 17 00:00:00 2001 From: abrarShariar Date: Fri, 13 Jul 2018 02:37:07 +0600 Subject: [PATCH 4/6] factorial --- numerical/factorial.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 numerical/factorial.go diff --git a/numerical/factorial.go b/numerical/factorial.go new file mode 100644 index 0000000..3e4121d --- /dev/null +++ b/numerical/factorial.go @@ -0,0 +1,16 @@ +package main +import "fmt" + +func factorial(num int) int { + if num == 0 { + return 1 + } + return num * factorial(num - 1) +} + + +func main() { + num := 10 + result := factorial(num) + fmt.Println(result) +} From acfb85d359a81c8cd0a0f27e74ff9cbe98b99de3 Mon Sep 17 00:00:00 2001 From: abrarShariar Date: Fri, 13 Jul 2018 02:51:26 +0600 Subject: [PATCH 5/6] fibonacci --- numerical/factorial.go | 1 - numerical/fibonacci.go | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 numerical/fibonacci.go diff --git a/numerical/factorial.go b/numerical/factorial.go index 3e4121d..6536860 100644 --- a/numerical/factorial.go +++ b/numerical/factorial.go @@ -8,7 +8,6 @@ func factorial(num int) int { return num * factorial(num - 1) } - func main() { num := 10 result := factorial(num) diff --git a/numerical/fibonacci.go b/numerical/fibonacci.go new file mode 100644 index 0000000..047dc1a --- /dev/null +++ b/numerical/fibonacci.go @@ -0,0 +1,16 @@ +package main +import "fmt" + +//using recursion +func fibo(num int) int { + if num <= 1 { + return num + } + return fibo(num -1) + fibo(num - 2) +} + +func main(){ + num := 10 + result := fibo(num) + fmt.Println(result) +} From 8b8ac1388e43d40017324b746b6235c6e274b764 Mon Sep 17 00:00:00 2001 From: abrarShariar Date: Fri, 13 Jul 2018 02:54:09 +0600 Subject: [PATCH 6/6] updated README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e38f7fc..a261c2d 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,8 @@ Algorithms #### Numerical * [gcd](https://en.wikipedia.org/wiki/Greatest_common_divisor) + * [factorial](https://en.wikipedia.org/wiki/Factorial) + * [fibonacci](https://en.wikipedia.org/wiki/Fibonacci_number) Contribution ------------