成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們一起再聊聊B-Tree的Golang實現

開發 前端
偽代碼用了順序查找的方法,即O(N)。從Part1可知,node中的元素是從小到大排列的,所以我們可以用二分的方式優化。

這是B-Tree合集的第二部分。在這一部分會實現基本的數據結構和Search。

基本數據結構

根據Part1介紹的B-Tree的屬性,我們可以建立node和tree兩個基本的數據結構

type BTreeNode struct {
keys []int // An array of keys
t int // Minimum degree
c []*BTreeNode // An array of child pointers
n int // Current number of keys
leaf bool // Is true when node is leaf. Otherwise false
}

type BTree struct {
root *BTreeNode // Pointer to root node
t int // Minimum degree
}

// Constructor for BTreeNode
func NewBTreeNode(t int, leaf bool) *BTreeNode {
return &BTreeNode{
keys: make([]int, t<<1-1),
t: t,
c: make([]*BTreeNode, t<<1),
leaf: leaf,
}
}

// Constructor (Initializes tree as empty)
func NewBTree(t int) *BTree {
return &BTree{
t: t,
}
}

Search

比如要在下面這個B樹中找120

那么從Part1可知,我們都會從root出發,所以有下面3步即可找到120

可見,可以用下面的偽代碼來描述Search方法

對于紅框里面的,意思是找第一個大于等于k的鍵index,但是偽代碼用了順序查找的方法,即O(N)。從Part1可知,node中的元素是從小到大排列的,所以我們可以用二分的方式優化。

// find the index of the first key which is greater or equal to k
func findGE(s []int, left, right, k int) int {
if left <= right {
mid := left + (right-left)>>1

if k == s[mid] {
return mid
} else if k > s[mid] {
return findGE(s, mid+1, right, k)
} else {
return findGE(s, left, mid-1, k)
}
}

return left
}

下面是Search的代碼

func (n *BTreeNode) search(k int) *BTreeNode {
i := findGE(n.keys, 0, n.n-1, k)

if n.keys[i] == k {
return n
}
if n.leaf {
return nil
}
return n.c[i].search(k)
}

func (t *BTree) Search(k int) *BTreeNode {
if t.root != nil {
return t.root.search(k)
}

return nil
}

在下次的Part3中,將實現B-Tree的Insert。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2023-01-26 00:59:39

B-Treegolang度量衡

2024-02-20 21:34:16

循環GolangGo

2022-06-09 21:57:19

TCPIP協議棧

2024-11-27 16:07:45

2023-08-10 08:28:46

網絡編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發模式

2022-05-24 08:21:16

數據安全API

2023-09-10 21:42:31

2022-10-08 00:00:05

SQL機制結構

2021-08-27 07:06:10

IOJava抽象

2023-11-03 12:54:00

KAFKA探索中間件

2023-04-26 07:30:00

promptUI非結構化

2024-05-11 07:29:48

Redis延遲隊列優化

2023-08-02 08:35:54

文件操作數據源

2022-12-06 08:12:11

Java關鍵字

2025-04-11 00:05:49

RPC底層分布式

2022-09-08 08:50:17

SSDOracleCPU

2024-09-09 08:53:56

2024-06-14 09:32:12

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清一区二区 | av电影手机版 | 国产精品一区二区福利视频 | 日本精品一区二区三区在线观看视频 | 国内自拍偷拍一区 | a天堂在线| 日韩欧美在 | 午夜影院在线 | 国产精品成人一区二区 | 超碰国产在线 | 日本又色又爽又黄的大片 | 黄网站免费在线观看 | 成人水多啪啪片 | 伊人精品视频 | 在线视频一区二区三区 | 少妇淫片aaaaa毛片叫床爽 | 天天干天天操天天射 | 亚洲一区三区在线观看 | 在线免费观看毛片 | 国产精品免费在线 | 一区二区三区四区视频 | 精品美女| 国产1区2区在线观看 | 久久精点视频 | 亚洲精品亚洲人成人网 | 一级黄色录像毛片 | 日韩欧美在线观看视频网站 | 国产日韩一区二区三区 | 国产1区在线 | 久久久99精品免费观看 | 日韩一区二区三区在线视频 | 在线免费观看黄a | 色综合久 | 91色综合| 欧美精品久久 | 欧美日韩一本 | 四虎影院在线观看免费视频 | 无码一区二区三区视频 | 91精品国产综合久久婷婷香蕉 | 色永久| 在线一区二区三区 |