summaryrefslogtreecommitdiff
path: root/ds/integer.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2020-07-14 22:41:16 +0100
committerPaul Buetow <paul@buetow.org>2020-07-14 22:41:16 +0100
commit7f87861624a1c5feb5523479db1c242a98f659b2 (patch)
treeed71e8e045c21738b3305e4609d66c5a4a2d5032 /ds/integer.go
parent1a175ce919dddb8d3a58533f3827a105483442c0 (diff)
add shellsort and refactor a bit
Diffstat (limited to 'ds/integer.go')
-rw-r--r--ds/integer.go43
1 files changed, 37 insertions, 6 deletions
diff --git a/ds/integer.go b/ds/integer.go
index 69ee0aa..b8026da 100644
--- a/ds/integer.go
+++ b/ds/integer.go
@@ -1,25 +1,56 @@
package ds
-import "math/rand"
+import (
+ "fmt"
+ "math/rand"
+)
-type Integer int
+type Integer struct {
+ val int
+}
func RandomIntegers(length, max int) []Comparer {
a := make([]Comparer, length)
for i := 0; i < length; i++ {
- a[i] = Integer(rand.Intn(max))
+ a[i] = Integer{rand.Intn(max)}
}
return a
}
+func SortedIntegers(length int) []Comparer {
+ a := make([]Comparer, length)
+ for i := 0; i < length; i++ {
+ a[i] = Integer{i}
+ }
+ return a
+}
+
+func ReverseSortedIntegers(length int) []Comparer {
+ a := make([]Comparer, length)
+ j := length
+ for i := 0; i < length; i++ {
+ a[i] = Integer{j}
+ j--
+ }
+ return a
+}
+
+func (i Integer) String() string {
+ return fmt.Sprintf("%d", i.val)
+}
+
+func (i Integer) IntVal() int {
+ return i.val
+}
+
func (i Integer) LowerThan(j Comparer) bool {
- return i < j.(Integer)
+ return i.val < j.IntVal()
}
func (i Integer) HigherThan(j Comparer) bool {
- return i > j.(Integer)
+ return i.val > j.IntVal()
}
func (i Integer) Equals(j Comparer) bool {
- return i == j.(Integer)
+ return i.val == j.IntVal()
}