Skip to content

Commit 9b2cc73

Browse files
committed
init project
0 parents  commit 9b2cc73

File tree

4 files changed

+94
-0
lines changed

4 files changed

+94
-0
lines changed

bubbleSort/bubbleSort.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package bubbleSort
2+
3+
func sweep(numbers []int, prevPhases int, reversed bool) bool {
4+
var N int = len(numbers)
5+
var firstIndex int = 0
6+
var secondIndex int = 1
7+
var didSwap bool
8+
9+
for secondIndex < (N - prevPhases) {
10+
var firstNumber int = numbers[firstIndex]
11+
var secondNumber int = numbers[secondIndex]
12+
13+
if reversed {
14+
if firstNumber < secondNumber {
15+
numbers[firstIndex] = secondNumber
16+
numbers[secondIndex] = firstNumber
17+
didSwap = true
18+
}
19+
20+
} else {
21+
if firstNumber > secondNumber {
22+
numbers[firstIndex] = secondNumber
23+
numbers[secondIndex] = firstNumber
24+
didSwap = true
25+
}
26+
27+
}
28+
29+
firstIndex++
30+
secondIndex++
31+
}
32+
33+
return didSwap
34+
}
35+
36+
func Sort(numbers []int, reversed bool) []int {
37+
N := len(numbers)
38+
i := 0
39+
for i < N {
40+
sweep(numbers, i, reversed)
41+
i++
42+
}
43+
44+
return numbers
45+
}

bubbleSort/bubbleSort_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package bubbleSort
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
)
7+
8+
func TestSort(t *testing.T) {
9+
result := Sort([]int{5, 2, 4, 3, 1, 0}, true)
10+
11+
if !reflect.DeepEqual(result, []int{5, 4, 3, 2, 1, 0}) {
12+
t.Errorf("%v must be the same with [5, 4, 3, 2, 1, 0] ", result)
13+
}
14+
15+
result = Sort([]int{5, 2, 4, 3, 1, 0}, false)
16+
17+
if !reflect.DeepEqual(result, []int{0, 1, 2, 3, 4, 5}) {
18+
t.Errorf("%v must be the same with [0, 1, 2, 3, 4, 5]", result)
19+
}
20+
}

go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module github.com/dimasdh842/sorting_algorithm
2+
3+
go 1.15

main.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"reflect"
6+
7+
"github.com/dimasdh842/sorting_algorithm/bubbleSort"
8+
)
9+
10+
func main() {
11+
12+
numbers := []int{5, 1, 4, 3, 2, 0}
13+
result := bubbleSort.Sort(numbers, true)
14+
fmt.Println(result)
15+
fmt.Println(numbers)
16+
17+
// sliceA := []int{1, 2, 3, 11}
18+
// sliceB := []int{1, 2, 3, 4}
19+
20+
if reflect.DeepEqual(result, numbers) {
21+
fmt.Println("Slices are equal")
22+
} else {
23+
fmt.Println("Slices are not equal")
24+
}
25+
26+
}

0 commit comments

Comments
 (0)