Ai
1 Star 0 Fork 0

WSRer/simple-hashtable-storage

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
recordutils.go 905 Bytes
一键复制 编辑 原始数据 按行查看 历史
WSRer 提交于 2024-10-16 08:20 +08:00 . feat: bisearch in userrecord
package shs
import (
"bytes"
"slices"
"sort"
)
var _ sort.Interface = (*SortUserRecordByKey)(nil)
type SortUserRecordByKey []Record
func (s SortUserRecordByKey) Len() int {
return len(s)
}
func compareBytes(a, b []byte) bool {
return bytes.Compare(a, b) < 0
}
func (s SortUserRecordByKey) Less(i, j int) bool {
return compareBytes(s[i].Key, s[j].Key)
}
func (s SortUserRecordByKey) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func binarySearchUserRecordsByKey(arr []Record, target []byte) int {
left, right := 0, len(arr)-1
for left <= right {
mid := left + (right-left)/2 // 防止溢出
if slices.Equal(arr[mid].Key, target) {
return mid // 找到目标,返回索引
} else if compareBytes(arr[mid].Key, target) {
left = mid + 1 // 在右半部分继续搜索
} else {
right = mid - 1 // 在左半部分继续搜索
}
}
return -1 // 未找到目标,返回-1
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/asphodelus_dev/simple-hashtable-storage.git
git@gitee.com:asphodelus_dev/simple-hashtable-storage.git
asphodelus_dev
simple-hashtable-storage
simple-hashtable-storage
v0.1.0

搜索帮助