move cocktail sort to separate package

Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
move-sorts-to-separate-packages
Alexander Kuleshov 6 years ago
parent 745435d087
commit 22a9e841eb
No known key found for this signature in database
GPG Key ID: EE88CAC52D66AC9B

@ -1,43 +1,28 @@
package main
package cocktal_sort
/*
* Cocktail sort - https://en.wikipedia.org/wiki/Cocktail_sort
*/
import (
sortable "github.com/0xAX/go-algorithms/sort"
)
import "fmt"
func Sort(data sortable.Sortable) sortable.Sortable {
for i := 0; i < data.Len()/2; i++ {
left := 0
right := data.Len() - 1
import "github.com/0xAX/go-algorithms"
for left <= right {
if data.Less(left+1, left) {
data.Swap(left, left+1)
}
func main() {
arr := utils.RandArray(10)
fmt.Println("Initial array is:", arr)
fmt.Println("")
tmp := 0
for i := 0; i < len(arr) / 2; i++ {
left := 0
right := len(arr) - 1
for ; left <= right ; {
if arr[left] > arr[left + 1] {
tmp = arr[left]
arr[left] = arr[left + 1]
arr[left + 1] = tmp
}
left++
if arr[right - 1] > arr[right] {
tmp = arr[right - 1]
arr[right - 1] = arr[right]
arr[right] = tmp
}
left++
right--
}
}
fmt.Println("Sorted array is: ", arr)
if data.Less(right, right-1) {
data.Swap(right, right-1)
}
right--
}
}
return data
}

@ -0,0 +1,25 @@
package cocktal_sort
import (
sortable "github.com/0xAX/go-algorithms/sort"
"math/rand"
"testing"
)
func TestSort(t *testing.T) {
var s = make(sortable.IntSlice, 10)
for i := 0; i < 10; i++ {
s[i] = rand.Intn(i + 1)
}
Sort(&s)
for i := 0; i < 10; i++ {
if i != 9 {
if s[i] > s[i+1] {
t.Fatal("s[i] > s[i + 1]", s[i], s[i+1])
}
}
}
}
Loading…
Cancel
Save