基於PHP簡單實現BTree

2021-10-07 11:49:49 字數 2600 閱讀 4514

這幾天看mysql索引的知識,了解到btree資料結構,無聊想挑戰一下去實現一下,btree的資料結構特點我就不介紹,具體的**請檢視這個鏈結我比較笨,不會使用畫圖軟體?

<?php

//存放每乙個資料的容器

class

ceil}//

class

unit

//新增ceil

public

function

add_ceil

($ceil

)return

$this;}

//min -> max sort 插入ceil的值與佇列進行排序,返回插入ceil所需要點位置及其unit例項

public

function

find_node

(unit $unit

,ceil $ceil

)//非0位置,切當前unit前乙個位置存在右unit,則遞迴查詢if(

$pointer_position

>0&&

$pointer_item

->

right

!=null

)return

['unit'

=>

$unit

,'position'

=>

$pointer_position];

}//獲取插入ceil在當前unit中的位置

public

function

get_sort

($items

,$ceil

,$position_limit

=false

)elseif(

$items

[$position]-

>

index

>

$ceil

->

index)if

($items

[$position]-

>

index

<

$ceil

->

index

&&$items

[$position+1

]->

index

>

$ceil

->

index)}

}if(!

$position_limit

)return

$pointer_position;}

//執行**操作

public

function

division

($unit

)$middle_ceil[0

]->

right

=$right_unit

;$left_unit

->

parent

=$right_unit

->

parent

=$unit;}

else}}

public

function

insert_parent

($parent

,$ceil

,$left_unit

,$right_unit

)$ceil

->

right

=$right_unit

;//判斷**後的節點插入父unit後是否是佇列的最左側,僅當左端**存在此現象if(

$position!=0

)else

$left_unit

->

parent

=$right_unit

->

parent

=$parent

;array_splice

($parent

->

items

,$position,0

,[$ceil])

;return

$parent;}

}//class

btree

//執行資料填充動作

public

function

format

($data

)return

$this;}

}$data=[

2,1,

7,6,

11,4,

8,13,

10,5,

17,9,

16,20,

3,12,

14,18,

19,15]

;$root

=new

unit([

newceil

(array_shift

($data))

]);$fork_num=5

;$b_tree_root

=new

btree

($root

,$fork_num);

$b_tree

=$b_tree_root

->

format

($data);

var_dump

($b_tree

);

BTree和B Tree 簡單區別

本篇作用於各種樹之間的區別,非演算法詳細介紹,只是給我們這種非科班出身的一種大概的印象,現在網上更多是講各種樹的怎麼實現的細節問題,本篇不涉及那麼高深,如果詳細了解可以查閱他人的資料,很多大神已經說的很多了 二叉樹效果 這個是我們想象中的本應該的樹的資料結構。可是他存在一種極端的情況 他的查詢效率就...

BTree和B Tree 簡單區別

本篇作用於各種樹之間的區別,非演算法詳細介紹,只是給我們這種非科班出身的一種大概的印象,現在網上更多是講各種樹的怎麼實現的細節問題,本篇不涉及那麼高深,如果詳細了解可以查閱他人的資料,很多大神已經說的很多了 二叉樹效果 這個是我們想象中的本應該的樹的資料結構。可是他存在一種極端的情況 他的查詢效率就...

PHP實現基於Swoole簡單的HTTP伺服器

引用swoole官方定義 php語言的非同步 並行 高效能網路通訊框架,使用純c語言編寫,提供了php語言的非同步多執行緒伺服器,非同步tcp udp網路客戶端,非同步mysql,資料庫連線池,asynctask,訊息佇列,毫秒定時器,非同步檔案讀寫,非同步dns查詢。swoole可以廣泛應用於網際...