Skip to content

Commit 87c263d

Browse files
c4llmeco4chcclauss
authored andcommitted
Removed main from all sort functions, changed packages to "sorts" package (#100)
* Updated packages, removed main from all but topological sort * Commented out main for the time being * Removed main from remaining files * Fixed naming issue * Renamed heap_sort, top_sort, deleted copy of select, insert * Added sorts_test and test cases * Updated linter to check sorts
1 parent f6f62d1 commit 87c263d

13 files changed

+209
-248
lines changed

.github/workflows/golangci-lint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ jobs:
1818
- run: ./bin/golangci-lint run --no-config dynamic-programming || true
1919
- run: ./bin/golangci-lint run --no-config other || true
2020
- run: ./bin/golangci-lint run --no-config searches || true
21-
- run: ./bin/golangci-lint run --no-config sorts || true
21+
- run: ./bin/golangci-lint run --no-config sorts

sorts/InsertionSort.go

Lines changed: 0 additions & 21 deletions
This file was deleted.

sorts/SelectionSort.go

Lines changed: 0 additions & 29 deletions
This file was deleted.

sorts/bubble_sort.go

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,22 @@
1-
package main
2-
3-
import (
4-
"fmt"
5-
)
1+
//Package sorts a package for demonstrating sorting algorithms in Go
2+
package sorts
63

74
func bubbleSort(arrayzor []int) {
85

9-
swapped := true;
6+
swapped := true
107
for swapped {
118
swapped = false
12-
for i := 0; i < len(arrayzor) - 1; i++ {
13-
if arrayzor[i + 1] < arrayzor[i] {
14-
Swap(arrayzor, i, i + 1)
9+
for i := 0; i < len(arrayzor)-1; i++ {
10+
if arrayzor[i+1] < arrayzor[i] {
11+
swap(arrayzor, i, i+1)
1512
swapped = true
1613
}
1714
}
18-
}
15+
}
1916
}
2017

21-
func Swap(arrayzor []int, i, j int) {
18+
func swap(arrayzor []int, i, j int) {
2219
tmp := arrayzor[j]
2320
arrayzor[j] = arrayzor[i]
2421
arrayzor[i] = tmp
2522
}
26-
27-
func main() {
28-
29-
arrayzor := []int{1, 6, 2, 4, 9, 0, 5, 3, 7, 8}
30-
fmt.Println("Unsorted array: ", arrayzor)
31-
bubbleSort(arrayzor)
32-
fmt.Println("Sorted array: ", arrayzor)
33-
}

sorts/Heapsort.go renamed to sorts/heap_sort.go

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
package main
1+
//Package sorts a package for demonstrating sorting algorithms in Go
2+
package sorts
23

3-
import "fmt"
4-
import "math/rand"
5-
import "time"
4+
import (
5+
"fmt"
6+
)
67

78
type MaxHeap struct {
89
slice []int
@@ -52,21 +53,3 @@ func heapSort(slice []int) []int {
5253
}
5354
return h.slice
5455
}
55-
56-
func main() {
57-
s1 := rand.NewSource(time.Now().UnixNano())
58-
r1 := rand.New(s1)
59-
s := make([]int, 20)
60-
for index, _ := range s {
61-
s[index] = r1.Intn(400)
62-
}
63-
fmt.Println("Randomly generated array:")
64-
fmt.Println(s)
65-
h := BuildMaxHeap(s)
66-
fmt.Println("\nInital Heap: ")
67-
fmt.Println(h.slice, "\n")
68-
69-
s = heapSort(s)
70-
fmt.Println("\nFinal List:")
71-
fmt.Println(s)
72-
}

sorts/insertion_sort.go

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
package main
2-
3-
import "fmt"
4-
5-
func main() {
6-
arr := [9]int{2, 1, 4, 3, 5, 9, 7, 6, 8}
1+
//Package sorts a package for demonstrating sorting algorithms in Go
2+
package sorts
73

4+
func insertionSort(arr []int) []int {
85
for out := 1; out < len(arr); out++ {
96
temp := arr[out]
107
in := out
@@ -14,8 +11,5 @@ func main() {
1411
}
1512
arr[in] = temp
1613
}
17-
18-
for _, sortedvals := range arr {
19-
fmt.Println(sortedvals)
20-
}
14+
return arr
2115
}

sorts/merge_sort.go

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,48 @@
1-
package main
2-
3-
import "fmt"
1+
//Package sorts a package for demonstrating sorting algorithms in Go
2+
package sorts
43

54
func merge(a []int, b []int) []int {
65

7-
var r = make([]int, len(a) + len(b))
8-
var i = 0
9-
var j = 0
10-
11-
for i < len(a) && j < len(b) {
12-
13-
if a[i] <= b[j] {
14-
r[i+j] = a[i]
15-
i++
16-
} else {
17-
r[i+j] = b[j]
18-
j++
19-
}
20-
21-
}
22-
23-
for i < len(a) { r[i+j] = a[i]; i++ }
24-
for j < len(b) { r[i+j] = b[j]; j++ }
25-
26-
return r
27-
6+
var r = make([]int, len(a)+len(b))
7+
var i = 0
8+
var j = 0
9+
10+
for i < len(a) && j < len(b) {
11+
12+
if a[i] <= b[j] {
13+
r[i+j] = a[i]
14+
i++
15+
} else {
16+
r[i+j] = b[j]
17+
j++
18+
}
19+
20+
}
21+
22+
for i < len(a) {
23+
r[i+j] = a[i]
24+
i++
25+
}
26+
for j < len(b) {
27+
r[i+j] = b[j]
28+
j++
29+
}
30+
31+
return r
32+
2833
}
2934

35+
//Mergesort Perform mergesort on a slice of ints
3036
func Mergesort(items []int) []int {
3137

32-
if len(items) < 2 {
33-
return items
34-
35-
}
38+
if len(items) < 2 {
39+
return items
3640

37-
var middle = len(items) / 2
38-
var a = Mergesort(items[:middle])
39-
var b = Mergesort(items[middle:])
40-
return merge(a, b)
41-
42-
}
41+
}
4342

44-
func main () {
43+
var middle = len(items) / 2
44+
var a = Mergesort(items[:middle])
45+
var b = Mergesort(items[middle:])
46+
return merge(a, b)
4547

46-
fmt.Print(Mergesort([]int{ 10, 9, 8, 4, 5, 6, 7, 3, 2, 1 }), "\n")
47-
4848
}

sorts/quick_sort.go

Lines changed: 35 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,38 @@
1-
package main
2-
3-
import "fmt"
4-
import "math/rand"
5-
6-
7-
func quick_sort(arr []int) []int {
8-
9-
if len(arr) <= 1 {
10-
return arr
11-
}
12-
13-
median := arr[rand.Intn(len(arr))]
14-
15-
low_part := make([]int, 0, len(arr))
16-
high_part := make([]int, 0, len(arr))
17-
middle_part := make([]int, 0, len(arr))
18-
19-
for _, item := range arr {
20-
switch {
21-
case item < median:
22-
low_part = append(low_part, item)
23-
case item == median:
24-
middle_part = append(middle_part, item)
25-
case item > median:
26-
high_part = append(high_part, item)
27-
}
28-
}
29-
30-
low_part = quick_sort(low_part)
31-
high_part = quick_sort(high_part)
32-
33-
low_part = append(low_part, middle_part...)
34-
low_part = append(low_part, high_part...)
35-
36-
return low_part
37-
}
1+
//Package sorts a package for demonstrating sorting algorithms in Go
2+
package sorts
383

39-
func main() {
40-
arr := RandomArray(10)
4+
import (
5+
"math/rand"
6+
)
417

42-
fmt.Println("Initial array is:", arr)
43-
fmt.Println("")
44-
fmt.Println("Sorted array is: ", quick_sort(arr))
45-
}
8+
func quickSort(arr []int) []int {
9+
10+
if len(arr) <= 1 {
11+
return arr
12+
}
13+
14+
median := arr[rand.Intn(len(arr))]
15+
16+
low_part := make([]int, 0, len(arr))
17+
high_part := make([]int, 0, len(arr))
18+
middle_part := make([]int, 0, len(arr))
4619

47-
func RandomArray(n int) []int {
48-
arr := make([]int, n)
49-
for i := 0; i <= n - 1; i++ {
50-
arr[i] = rand.Intn(n)
51-
}
52-
return arr
53-
}
20+
for _, item := range arr {
21+
switch {
22+
case item < median:
23+
low_part = append(low_part, item)
24+
case item == median:
25+
middle_part = append(middle_part, item)
26+
case item > median:
27+
high_part = append(high_part, item)
28+
}
29+
}
30+
31+
low_part = quickSort(low_part)
32+
high_part = quickSort(high_part)
33+
34+
low_part = append(low_part, middle_part...)
35+
low_part = append(low_part, high_part...)
36+
37+
return low_part
38+
}

sorts/selection_sort.go

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,20 @@
1-
package main
1+
//Package sorts a package for demonstrating sorting algorithms in Go
2+
package sorts
23

4+
func selectionSort(arr []int) {
5+
var min int = 0
6+
var tmp int = 0
37

4-
import "fmt"
8+
for i := 0; i < len(arr); i++ {
9+
min = i
10+
for j := i + 1; j < len(arr); j++ {
11+
if arr[j] < arr[min] {
12+
min = j
13+
}
14+
}
515

6-
7-
func main() {
8-
arr := [5]int{11, 12, 31, 4, 1}
9-
fmt.Println("Initial array is:", arr)
10-
fmt.Println("")
11-
12-
var min int = 0
13-
var tmp int = 0
14-
15-
for i := 0; i < len(arr); i++ {
16-
min = i
17-
for j := i + 1; j < len(arr); j++ {
18-
if arr[j] < arr[min] {
19-
min = j
20-
}
21-
}
22-
23-
tmp = arr[i]
24-
arr[i] = arr[min]
25-
arr[min] = tmp
26-
}
27-
28-
fmt.Println("Sorted array: ", arr)
29-
}
16+
tmp = arr[i]
17+
arr[i] = arr[min]
18+
arr[min] = tmp
19+
}
20+
}

0 commit comments

Comments
 (0)