Skip to content

Commit d7b9892

Browse files
committed
quadratic equation - bubble / insertion / selection sort
1 parent 365538d commit d7b9892

File tree

5 files changed

+114
-0
lines changed

5 files changed

+114
-0
lines changed

Diff for: quadratic_equation.go

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package main
2+
3+
import (
4+
"../golang-algorithms/utils"
5+
"fmt"
6+
"strconv"
7+
)
8+
9+
func quadraticEquation(a, b, c int) (solution string) {
10+
delta := b * b - 4 * a * c
11+
if delta < 0 {
12+
solution = "The discriminant is negative, then there are no real roots"
13+
} else if delta == 0 {
14+
solution = "The discriminant is zero, then there is exactly one real root x=-" +
15+
strconv.Itoa(b) + "/2*" + strconv.Itoa(a)
16+
} else {
17+
solution = "The discriminant is positive, then there are two distinct roots: " +
18+
" x1=-" + strconv.Itoa(b) + "-sqrt(" + strconv.Itoa(delta) +
19+
")/2*" + strconv.Itoa(a) +
20+
" and x2=-" + strconv.Itoa(b) + "+sqrt(" + strconv.Itoa(delta) +
21+
")/2*" + strconv.Itoa(a)
22+
}
23+
return
24+
}
25+
26+
27+
func main() {
28+
fmt.Println("The Standard Form of a Quadratic Equation is ax2 + bx + c = 0")
29+
fmt.Println("Please choose a, b, c")
30+
a := utils.NumberInput("a: ")
31+
b := utils.NumberInput("b: ")
32+
c := utils.NumberInput("c: ")
33+
fmt.Println(quadraticEquation(a, b ,c))
34+
}

Diff for: sort_bubble.go

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
utils "../golang-algorithms/utils"
6+
)
7+
8+
func bubbleSort(arr[] int) {
9+
for flag := true ; flag == true ; {
10+
flag = false
11+
for i := 0; i < len(arr) - 1; i++ {
12+
if arr[i] > arr[i+1] { arr[i], arr[i+1], flag = arr[i+1], arr[i], true }
13+
}
14+
}
15+
}
16+
17+
func main() {
18+
arr := utils.RandomIntArray(10)
19+
fmt.Println("Array before: ", arr)
20+
bubbleSort(arr)
21+
fmt.Println("Array after: ", arr)
22+
}

Diff for: sort_insertion.go

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
utils "../golang-algorithms/utils"
6+
)
7+
8+
func insertionSort(arr[] int) {
9+
for i := 1; i < len(arr) ; i++ {
10+
for j:= i; j > 0 && arr[j-1] > arr[j]; j-- {
11+
arr[j-1], arr[j] = arr[j], arr[j-1]
12+
}
13+
}
14+
}
15+
16+
func main() {
17+
arr := utils.RandomIntArray(10)
18+
fmt.Println("Array before: ", arr)
19+
insertionSort(arr)
20+
fmt.Println("Array after: ", arr)
21+
}

Diff for: sort_selection.go

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
utils "../golang-algorithms/utils"
6+
)
7+
8+
func selectionSort(arr[] int) {
9+
for i := 0 ; i < len(arr) ; i++ {
10+
min := i
11+
for j := i+1; j < len(arr); j++ {
12+
if arr[j] < min { min = j }
13+
}
14+
if min != i { arr[i], arr[min] = arr[min], arr[i] }
15+
}
16+
}
17+
18+
func main() {
19+
arr := utils.RandomIntArray(10)
20+
fmt.Println("Array before: ", arr)
21+
selectionSort(arr)
22+
fmt.Println("Array after: ", arr)
23+
}

Diff for: utils/library.go

+14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
package utils
22

3+
import (
4+
"math/rand"
5+
"time"
6+
)
7+
38
func Bool2Float(b bool) float64 {
49
if b { return 1 }
510
return 0
611
}
12+
13+
func RandomIntArray(size int) (arr[] int) {
14+
for i := 0; i< size;i++ {
15+
rand.Seed(time.Now().UTC().UnixNano())
16+
n:= rand.Intn(1000) - rand.Intn(1000)
17+
arr = append(arr, n)
18+
}
19+
return
20+
}

0 commit comments

Comments
 (0)