Skip to content

Commit 5d09ec9

Browse files
committed
add testing for buble sort and add reversed condition
1 parent 0a3a0ef commit 5d09ec9

File tree

5 files changed

+51
-8
lines changed

5 files changed

+51
-8
lines changed

bubbleSort/bubbleSort.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package bubbleSort
22

3-
func sweep(numbers []int, prevPhases int) bool {
3+
func sweep(numbers []int, prevPhases int, reversed bool) bool {
44
var N int = len(numbers)
55
var firstIndex int = 0
66
var secondIndex int = 1
@@ -10,10 +10,19 @@ func sweep(numbers []int, prevPhases int) bool {
1010
var firstNumber int = numbers[firstIndex]
1111
var secondNumber int = numbers[secondIndex]
1212

13-
if firstNumber > secondNumber {
14-
numbers[firstIndex] = secondNumber
15-
numbers[secondIndex] = firstNumber
16-
didSwap = true
13+
if reversed {
14+
15+
if firstNumber < secondNumber {
16+
numbers[firstIndex] = secondNumber
17+
numbers[secondIndex] = firstNumber
18+
didSwap = true
19+
}
20+
} else {
21+
if firstNumber > secondNumber {
22+
numbers[firstIndex] = secondNumber
23+
numbers[secondIndex] = firstNumber
24+
didSwap = true
25+
}
1726
}
1827

1928
firstIndex++
@@ -23,11 +32,11 @@ func sweep(numbers []int, prevPhases int) bool {
2332
return didSwap
2433
}
2534

26-
func Sort(numbers []int) []int {
35+
func Sort(numbers []int, reversed bool) []int {
2736
N := len(numbers)
2837
i := 0
2938
for i < N {
30-
if !sweep(numbers, i) {
39+
if !sweep(numbers, i, reversed) {
3140
return []int{}
3241
}
3342
i++

bubbleSort/bubbleSort_test.go

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

go.mod

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

33
go 1.15
4+
5+
require github.com/stretchr/testify v1.7.0

go.sum

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
2+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
4+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
5+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
6+
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
7+
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
8+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
9+
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
10+
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ func main() {
1010

1111
numbers := []int{5, 1, 4, 3, 2, 0}
1212
fmt.Println("before swap : ", numbers)
13-
bubbleSort.Sort(numbers)
13+
bubbleSort.Sort(numbers, false)
1414
fmt.Println("after sorting : ", numbers)
1515

1616
}

0 commit comments

Comments
 (0)