diff options
| author | Paul Buetow <pbuetow@mimecast.com> | 2020-08-08 13:27:43 +0100 |
|---|---|---|
| committer | Paul Buetow <pbuetow@mimecast.com> | 2020-08-08 13:27:43 +0100 |
| commit | 44e930b71107310eae55060cf0aa2cac7089d239 (patch) | |
| tree | 2b5c1cc62bc51a87d75393a80053ffe85db043cb | |
| parent | 390333bb314f6cb25adc5716ea383112860ed342 (diff) | |
fortune not found
Quick commit
| -rw-r--r-- | ds/arraylist.go | 2 | ||||
| -rw-r--r-- | ds/elem.go | 12 | ||||
| -rw-r--r-- | ds/integer.go | 55 | ||||
| -rw-r--r-- | ds/integer_test.go | 42 | ||||
| -rw-r--r-- | sort/quick.go | 4 | ||||
| -rw-r--r-- | sort/sort_test.go | 14 |
6 files changed, 32 insertions, 97 deletions
diff --git a/ds/arraylist.go b/ds/arraylist.go index d3feef5..66490f3 100644 --- a/ds/arraylist.go +++ b/ds/arraylist.go @@ -5,7 +5,7 @@ import ( "strings" ) -type ArrayList []Elem +type ArrayList []Integer func (a ArrayList) FirstN(n int) string { var sb strings.Builder diff --git a/ds/elem.go b/ds/elem.go deleted file mode 100644 index 22bc9d9..0000000 --- a/ds/elem.go +++ /dev/null @@ -1,12 +0,0 @@ -package ds - -type Elem interface { - Equal(e Elem) bool - Lower(e Elem) bool - LowerEqual(e Elem) bool - Higher(e Elem) bool - HigherEqual(e Elem) bool - Compare(e Elem) int - CompareCB(e Elem, lowerCB, higherCB, equalsCB func()) - Int() int -} diff --git a/ds/integer.go b/ds/integer.go index e8936c8..1372624 100644 --- a/ds/integer.go +++ b/ds/integer.go @@ -1,22 +1,19 @@ package ds import ( - "fmt" "math/rand" ) -type Integer struct { - Val int -} +type Integer int func RandomIntegers(length, max int) ArrayList { a := make(ArrayList, length) for i := 0; i < length; i++ { if max > 0 { - a[i] = Integer{rand.Intn(max)} + a[i] = Integer(rand.Intn(max)) continue } - a[i] = Integer{rand.Int()} + a[i] = Integer(rand.Int()) } return a } @@ -24,7 +21,7 @@ func RandomIntegers(length, max int) ArrayList { func AscendingIntegers(length int) ArrayList { a := make(ArrayList, length) for i := 0; i < length; i++ { - a[i] = Integer{i} + a[i] = Integer(i) } return a } @@ -33,57 +30,47 @@ func DescendingIntegers(length int) ArrayList { a := make(ArrayList, length) j := length for i := 0; i < length; i++ { - a[i] = Integer{j} + a[i] = Integer(j) j-- } return a } -func (i Integer) String() string { - return fmt.Sprintf("%d", i.Val) -} - -func (i Integer) Int() int { - return i.Val -} - -func (i Integer) Equal(j Elem) bool { - return i.Val == j.Int() +func (i Integer) Equal(j Integer) bool { + return i == j } -func (i Integer) Lower(j Elem) bool { - return i.Val < j.Int() +func (i Integer) Lower(j Integer) bool { + return i < j } -func (i Integer) LowerEqual(j Elem) bool { - return i.Val <= j.Int() +func (i Integer) LowerEqual(j Integer) bool { + return i <= j } -func (i Integer) Higher(j Elem) bool { - return i.Val > j.Int() +func (i Integer) Higher(j Integer) bool { + return i > j } -func (i Integer) HigherEqual(j Elem) bool { - return i.Val >= j.Int() +func (i Integer) HigherEqual(j Integer) bool { + return i >= j } -func (i Integer) Compare(j Elem) int { - jVal := j.Int() +func (i Integer) Compare(j Integer) int { switch { - case i.Val < jVal: + case i < j: return -1 - case i.Val > jVal: + case i > j: return 1 } return 0 } -func (i Integer) CompareCB(j Elem, lowerCB, higherCB, equalsCB func()) { - jVal := j.Int() +func (i Integer) CompareCB(j Integer, lowerCB, higherCB, equalsCB func()) { switch { - case i.Val < jVal: + case i < j: lowerCB() - case i.Val > jVal: + case i > j: higherCB() default: equalsCB() diff --git a/ds/integer_test.go b/ds/integer_test.go deleted file mode 100644 index fe9cb90..0000000 --- a/ds/integer_test.go +++ /dev/null @@ -1,42 +0,0 @@ -package ds - -import "testing" - -func TestCompare(t *testing.T) { - i := Integer{1} - j := Integer{10} - res := i.Compare(j) - if res != -1 { - t.Errorf("%v must be lower than %v, but got %v", i, j, res) - } - - res = j.Compare(i) - if res != 1 { - t.Errorf("%v must be higher than %v, but got %v", j, i, res) - } - - i = Integer{2} - j = Integer{2} - res = i.Compare(j) - if res != 0 { - t.Errorf("%v must be equal to %v, but got %v", i, j, res) - } - - i = Integer{23} - j = Integer{23} - if !i.HigherEqual(j) { - t.Errorf("Unpexpected %v.HigherEqual(%v) == false", - i,j) - } - - i = Integer{23} - j = Integer{42} - if i.HigherEqual(j) { - t.Errorf("Unpexpected %v.HigherEqual(%v) == true", - i,j) - } - if !j.HigherEqual(i) { - t.Errorf("Unpexpected %v.HigherEqual(%v) == false", - j,i) - } -} diff --git a/sort/quick.go b/sort/quick.go index f58f046..5dbcfe5 100644 --- a/sort/quick.go +++ b/sort/quick.go @@ -31,13 +31,13 @@ func quickPartition(a ds.ArrayList, lo, hi int) int { v := a[lo] // Partitioning item for { - for i++; a[i].Lower(v); i++ { + for i++; a[i] < v; i++ { if i == hi { break } } - for j--; v.Lower(a[j]); j-- { + for j--; v < a[j]; j-- { if j == lo { break } diff --git a/sort/sort_test.go b/sort/sort_test.go index 899669b..fa515d7 100644 --- a/sort/sort_test.go +++ b/sort/sort_test.go @@ -10,8 +10,9 @@ import ( var benchResult ds.ArrayList var benchResultInt []int -const minLength int = 100 -const maxLength int = 10000 +const minLength int = 1 +const maxLength int = 1000000 +const maxSlowLength int = 100000 var arrayListCache map[string]ds.ArrayList @@ -19,13 +20,13 @@ type sortAlgorithm func(ds.ArrayList) ds.ArrayList type sortAlgorithmInt func([]int) []int func TestSelectionSort(t *testing.T) { - for i := minLength; i <= maxLength; i *= 10 { + for i := minLength; i <= maxSlowLength; i *= 10 { test(Selection, i, t) } } func TestInsertionSort(t *testing.T) { - for i := minLength; i <= maxLength; i *= 10 { + for i := minLength; i <= maxSlowLength; i *= 10 { test(Insertion, i, t) } } @@ -82,13 +83,13 @@ func TestShuffleSort(t *testing.T) { } func BenchmarkInsertionSort(b *testing.B) { - for i := minLength; i <= maxLength; i *= 10 { + for i := minLength; i <= maxSlowLength; i *= 10 { benchmark(Insertion, i, b) } } func BenchmarkSelectionSort(b *testing.B) { - for i := minLength; i <= maxLength; i *= 10 { + for i := minLength; i <= maxSlowLength; i *= 10 { benchmark(Selection, i, b) } } @@ -204,6 +205,7 @@ func makeRandomIntegers(length, max int) ds.ArrayList { return a } a := ds.RandomIntegers(length, max) + a = Shuffle(a) arrayListCache[key] = a return a } |
