Skip to content

Commit b976d5e

Browse files
committedDec 5, 2023
first commit
0 parents  commit b976d5e

File tree

5 files changed

+126
-0
lines changed

5 files changed

+126
-0
lines changed
 

‎arrays.go

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package main
2+
3+
import "math/rand"
4+
5+
func getRandomArr(size int) []int {
6+
arr := make([]int, size)
7+
for i := 0; i < size; i++ {
8+
arr[i] = rand.Intn(size * 10)
9+
}
10+
return arr
11+
}
12+
13+
func printArr(arr []int) {
14+
print("[")
15+
for i, v := range arr {
16+
if i == len(arr)-1 {
17+
print(v)
18+
} else {
19+
print(v, ",")
20+
}
21+
}
22+
println("]")
23+
println("length of array:", len(arr))
24+
}

‎go.mod

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module prime
2+
3+
go 1.21.4

‎main.go

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package main
2+
3+
func main() {
4+
// randomArr := getRandomArr(1000)
5+
// crystallBall := []bool{false, false, false, false, false, false, false, false, false, false, true, true, true, true}
6+
// TestBinaryCrystalBall(crystallBall)
7+
8+
// arr := []int{15, 2, 17, 0, 66, 5, 22, 9, 7}
9+
// TestBubbleSort(randomArr)
10+
// printArr(randomArr)
11+
12+
}

‎search.go

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package main
2+
3+
import (
4+
"math"
5+
)
6+
7+
8+
func linearSearch(arr []int, value int) int {
9+
for i, v := range arr {
10+
if v == value {
11+
return i
12+
}
13+
}
14+
return -1
15+
}
16+
17+
func BinarySearch(arr []int, target int) int {
18+
low, high := 0, len(arr)-1
19+
for low <= high {
20+
mid := low + (high-low)/2
21+
if arr[mid] == target {
22+
return mid
23+
} else if target > arr[mid] {
24+
low = mid + 1
25+
} else {
26+
high = mid - 1
27+
}
28+
}
29+
return -1
30+
}
31+
32+
func SearchInt(arr []int, val int, ordered bool) int {
33+
if ordered {
34+
if len(arr) > 10000 {
35+
return TestBinarySearch(arr, val)
36+
} else {
37+
return TestLinearSearch(arr, val)
38+
}
39+
}
40+
return TestLinearSearch(arr, val)
41+
}
42+
43+
func BinaryCrystalBall(breaks []bool) int {
44+
jumpAmount := int(math.Floor(math.Sqrt(float64(len(breaks)))))
45+
i := jumpAmount
46+
for ; i < len(breaks); i += jumpAmount {
47+
if breaks[i] {
48+
break
49+
}
50+
}
51+
52+
i -= jumpAmount
53+
for j := 0; j < jumpAmount && i < len(breaks); j++ {
54+
if breaks[i] {
55+
return i
56+
}
57+
i++
58+
}
59+
60+
return -1
61+
62+
}
63+

‎sort.go

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"time"
6+
)
7+
8+
func BubbleSort(arr *[]int) []int {
9+
for i := 0; i < len(*arr)-1; i++ {
10+
for j := 0; j < len(*arr)-1-i; j++ {
11+
if (*arr)[j] > (*arr)[j+1] {
12+
(*arr)[j], (*arr)[j+1] = (*arr)[j+1], (*arr)[j]
13+
}
14+
}
15+
}
16+
return *arr
17+
}
18+
19+
func TestBubbleSort(arr []int) []int {
20+
now := time.Now()
21+
sortedArr := BubbleSort(&arr)
22+
fmt.Printf("Optimized Time taken to Bubble sort an array of length %v : %v\n", len(arr), time.Since(now))
23+
return sortedArr
24+
}

0 commit comments

Comments
 (0)