Implemented shuffle sort algorithm
This commit is contained in:
parent
0357c86f7d
commit
b929919bfb
|
@ -0,0 +1,29 @@
|
|||
package sort
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
)
|
||||
|
||||
// ShuffleSort is an implementation of shuffle sort algorithm.
|
||||
func ShuffleSort(a []int) []int {
|
||||
isSorted := func(a []int) bool {
|
||||
for i := 1; i < len(a); i++ {
|
||||
if a[i-1] > a[i] {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
for {
|
||||
if isSorted(a) {
|
||||
return a
|
||||
}
|
||||
|
||||
for i := range a {
|
||||
j := rand.Intn(i + 1)
|
||||
a[i], a[j] = a[j], a[i]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package sort
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestShuffleSort(t *testing.T) {
|
||||
testSort(t, ShuffleSort,
|
||||
[]int{5, 3, 1, 4, 2},
|
||||
[]int{1, 2, 3, 4, 5},
|
||||
)
|
||||
}
|
Loading…
Reference in New Issue