fix issue in garray.Search

This commit is contained in:
John
2019-06-12 10:11:54 +08:00
parent fccac04980
commit 6e7d08fbfb
4 changed files with 29 additions and 10 deletions

View File

@ -286,11 +286,17 @@ func (a *SortedIntArray) Contains(value int) bool {
// Search searches array by <value>, returns the index of <value>,
// or returns -1 if not exists.
func (a *SortedIntArray) Search(value int) (index int) {
index, _ = a.binSearch(value, true)
return
if i, r := a.binSearch(value, true); r == 0 {
return i
}
return -1
}
// Binary search.
// It returns the last compared index and the result.
// If <result> equals to 0, it means the value at <index> is equals to <value>.
// If <result> lesser than 0, it means the value at <index> is lesser than <value>.
// If <result> greater than 0, it means the value at <index> is greater than <value>.
func (a *SortedIntArray) binSearch(value int, lock bool) (index int, result int) {
if len(a.array) == 0 {
return -1, -2

View File

@ -287,11 +287,17 @@ func (a *SortedArray) Contains(value interface{}) bool {
// Search searches array by <value>, returns the index of <value>,
// or returns -1 if not exists.
func (a *SortedArray) Search(value interface{}) (index int) {
index, _ = a.binSearch(value, true)
return
if i, r := a.binSearch(value, true); r == 0 {
return i
}
return -1
}
// Binary search.
// It returns the last compared index and the result.
// If <result> equals to 0, it means the value at <index> is equals to <value>.
// If <result> lesser than 0, it means the value at <index> is lesser than <value>.
// If <result> greater than 0, it means the value at <index> is greater than <value>.
func (a *SortedArray) binSearch(value interface{}, lock bool)(index int, result int) {
if len(a.array) == 0 {
return -1, -2

View File

@ -281,11 +281,17 @@ func (a *SortedStringArray) Contains(value string) bool {
// Search searches array by <value>, returns the index of <value>,
// or returns -1 if not exists.
func (a *SortedStringArray) Search(value string) (index int) {
index, _ = a.binSearch(value, true)
return
if i, r := a.binSearch(value, true); r == 0 {
return i
}
return -1
}
// Binary search.
// It returns the last compared index and the result.
// If <result> equals to 0, it means the value at <index> is equals to <value>.
// If <result> lesser than 0, it means the value at <index> is lesser than <value>.
// If <result> greater than 0, it means the value at <index> is greater than <value>.
func (a *SortedStringArray) binSearch(value string, lock bool) (index int, result int) {
if len(a.array) == 0 {
return -1, -2

View File

@ -1,11 +1,12 @@
package main
import (
"fmt"
"github.com/gogf/gf/g/os/gtime"
"github.com/gogf/gf/g/container/garray"
"github.com/gogf/gf/g/test/gtest"
)
func main() {
fmt.Println(gtime.Now().Format("U"))
fmt.Println(gtime.Second())
a2 := []int{1}
array2 := garray.NewSortedIntArrayFrom(a2)
gtest.Assert(array2.Search(2),-1)
}