成人免费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

2022-10-08 00:00:05

SQL機制結構

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

2021-08-27 07:06:10

IOJava抽象

2023-04-26 07:30:00

promptUI非結構化

2023-11-03 12:54:00

KAFKA探索中間件

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社区 | 免费看爱爱视频 | 中国一级特黄毛片大片 | 91精品国产综合久久久久久丝袜 | 韩国av电影网| 一区二区在线 | 欧美日韩最新 | 成人福利片 | 久久久久国产一区二区三区不卡 | 午夜精品久久久久久久久久久久久 | 浮生影院免费观看中文版 | 日韩高清黄色 | 可以免费看的毛片 | 蜜桃视频在线观看免费视频网站www | 国产精品久久久久久久久久 | 亚洲永久精品国产 | 国产99久久精品一区二区永久免费 | 久久免费大片 | 成人在线国产 | 国产美女精品视频免费观看 | 日韩三级在线观看 | 欧美高清一区 | 精品亚洲一区二区三区 | 观看av | 99精品一区二区三区 | 色婷婷精品久久二区二区蜜臂av | 日韩欧美在| 国产黄色精品 | 亚洲精品乱码久久久久久按摩观 | 久久毛片 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 国产91九色 | 午夜小电影 | 亚洲成人精品在线观看 | 一级片免费网站 |