From 8f291992bdd98bd7ca6eefe084790e56d00833a8 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 17 Jul 2020 09:03:52 +0100 Subject: fix shell sort --- ds/comparer.go | 4 ++++ sort/sort_test.go | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/ds/comparer.go b/ds/comparer.go index 8fb3727..c132ea9 100644 --- a/ds/comparer.go +++ b/ds/comparer.go @@ -8,3 +8,7 @@ type Comparer interface { HigherEqual(a Comparer) bool Int() int } + +func (c []Comparer) firstN(n int) []Comparer { + return c +} diff --git a/sort/sort_test.go b/sort/sort_test.go index 9593cde..00f056a 100644 --- a/sort/sort_test.go +++ b/sort/sort_test.go @@ -33,6 +33,12 @@ func TestShellSort(t *testing.T) { } } +func TestShuffleSort(t *testing.T) { + for i := 1; i <= maxLength; i *= 10 { + testShuffle(Shuffle, i, t) + } +} + func BenchmarkInsertionSort(b *testing.B) { for i := 1; i <= maxLength; i *= 10 { benchmark(Insertion, i, b) @@ -63,6 +69,17 @@ func test(sort sortAlgorithm, length int, t *testing.T) { t.Run(fmt.Sprintf("%d", length), cb) } +func testShuffle(sort sortAlgorithm, length int, t *testing.T) { + cb := func(t *testing.T) { + t.Parallel() + a := sort(ds.SortedIntegers(length)) + if Sorted(a) { + t.Errorf("Array sorted: %v", a) + } + } + t.Run(fmt.Sprintf("%d", length), cb) +} + func benchmark(sort sortAlgorithm, length int, b *testing.B) { cb := func(b *testing.B) { a := makeIntegers(length, length) -- cgit v1.2.3