Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/open-node/jstructures

JavaScript 版本的数据结构,提供常用的数据结构封装,基于清华大学邓俊辉老师的数据结构课程
https://github.com/open-node/jstructures

algorithm data-structures heap javascript queue stack tree-structure

Last synced: 1 day ago
JSON representation

JavaScript 版本的数据结构,提供常用的数据结构封装,基于清华大学邓俊辉老师的数据结构课程

Awesome Lists containing this project

README

        

# JStructure
JavaScript 版本的数据结构,提供常用的数据结构封装,基于清华大学邓俊辉老师的数据结构课程

[![Build status](https://travis-ci.com/open-node/jstructures.svg?branch=master)](https://travis-ci.org/open-node/jstructures)
[![codecov](https://codecov.io/gh/open-node/jstructures/branch/master/graph/badge.svg)](https://codecov.io/gh/open-node/jstructures)

# 进度
* [x] List (linked-list)
* [x] Vector
* [x] Stack
* [x] Queue
* [x] SegmentTree
* [x] UnionFind
* [x] BinTree
* [x] BST (BinanySearchTree)
* [ ] BTree
* [x] Trie
* [ ] Graph
* [x] Heap
* [ ] LeftHeap
* [ ] Priority Queue

### Table of Contents

### Table of Contents

- [AVL][1]
- [insert][2]
- [Parameters][3]
- [remove][4]
- [Parameters][5]
- [balanced][6]
- [Parameters][7]
- [AVLBalanced][8]
- [Parameters][9]
- [balFac][10]
- [Parameters][11]
- [height][12]
- [Parameters][13]
- [BST][14]
- [search][15]
- [Parameters][16]
- [insert][17]
- [Parameters][18]
- [remove][19]
- [Parameters][20]
- [removeAt][21]
- [Parameters][22]
- [searchIn][23]
- [Parameters][24]
- [BinNode][25]
- [Parameters][26]
- [data][27]
- [parent][28]
- [lc][29]
- [rc][30]
- [height][31]
- [size][32]
- [isRoot][33]
- [isLChild][34]
- [isRChild][35]
- [hasParent][36]
- [hasLChild][37]
- [hasRChild][38]
- [hasChild][39]
- [hasBothChild][40]
- [isLeaf][41]
- [sibling][42]
- [uncle][43]
- [fromParentTo][44]
- [pred][45]
- [succ][46]
- [insertAsLC][47]
- [Parameters][48]
- [insertAsRC][49]
- [Parameters][50]
- [travLevel][51]
- [Parameters][52]
- [travPre][53]
- [Parameters][54]
- [travIn][55]
- [Parameters][56]
- [travPost][57]
- [Parameters][58]
- [swap][59]
- [Parameters][60]
- [BinTree][61]
- [size][62]
- [size][63]
- [Parameters][64]
- [empty][65]
- [root][66]
- [root][67]
- [Parameters][68]
- [updateHeightAbove][69]
- [Parameters][70]
- [insertAsRoot][71]
- [Parameters][72]
- [insertAsLC][73]
- [Parameters][74]
- [insertAsRC][75]
- [Parameters][76]
- [attachAsLC][77]
- [Parameters][78]
- [attachAsRC][79]
- [Parameters][80]
- [remove][81]
- [Parameters][82]
- [secede][83]
- [Parameters][84]
- [travLevel][85]
- [Parameters][86]
- [travPre][87]
- [Parameters][88]
- [travIn][89]
- [Parameters][90]
- [travPost][91]
- [Parameters][92]
- [Heap][93]
- [Parameters][94]
- [size][95]
- [percolateUp][96]
- [Parameters][97]
- [percolateDown][98]
- [Parameters][99]
- [insert][100]
- [Parameters][101]
- [getMax][102]
- [delMax][103]
- [Parameters][104]
- [properParent][105]
- [Parameters][106]
- [ListNode][107]
- [Parameters][108]
- [insertAsSucc][109]
- [Parameters][110]
- [insertAsPred][111]
- [Parameters][112]
- [List][113]
- [Parameters][114]
- [size][115]
- [first][116]
- [last][117]
- [insertAsFirst][118]
- [Parameters][119]
- [insertAsLast][120]
- [Parameters][121]
- [insertA][122]
- [Parameters][123]
- [insertB][124]
- [Parameters][125]
- [remove][126]
- [Parameters][127]
- [disordered][128]
- [findElem][129]
- [Parameters][130]
- [search][131]
- [Parameters][132]
- [deduplicate][133]
- [uniquify][134]
- [traverse][135]
- [Parameters][136]
- [valid][137]
- [Parameters][138]
- [selectMax][139]
- [Parameters][140]
- [insertionSort][141]
- [Parameters][142]
- [selectionSort][143]
- [Parameters][144]
- [merge][145]
- [Parameters][146]
- [mergeSort][147]
- [Parameters][148]
- [Queue][149]
- [enqueue][150]
- [Parameters][151]
- [dequeue][152]
- [front][153]
- [empty][154]
- [size][155]
- [SegmentTree][156]
- [Parameters][157]
- [size][158]
- [leftChild][159]
- [Parameters][160]
- [rightChild][161]
- [Parameters][162]
- [build][163]
- [Parameters][164]
- [query][165]
- [Parameters][166]
- [update][167]
- [Parameters][168]
- [Stack][169]
- [push][170]
- [Parameters][171]
- [pop][172]
- [top][173]
- [empty][174]
- [size][175]
- [Trie][176]
- [size][177]
- [root][178]
- [insert][179]
- [Parameters][180]
- [find][181]
- [Parameters][182]
- [UnionFind][183]
- [Parameters][184]
- [find][185]
- [Parameters][186]
- [union][187]
- [Parameters][188]
- [isConnected][189]
- [Parameters][190]
- [toString][191]
- [Vector][192]
- [Parameters][193]
- [size][194]
- [insert][195]
- [Parameters][196]
- [removeRange][197]
- [Parameters][198]
- [remove][199]
- [Parameters][200]
- [disordered][201]
- [findElem][202]
- [Parameters][203]
- [search][204]
- [Parameters][205]
- [deduplicate][206]
- [uniquify][207]
- [traverse][208]
- [Parameters][209]
- [binSearch][210]
- [Parameters][211]
- [bubbleSort][212]
- [Parameters][213]
- [merge][214]
- [Parameters][215]
- [mergeSort][216]
- [Parameters][217]

## AVL

**Extends BST**

AVL 类(AVL 树, 继承自 BST)

Returns **[AVL][218]** Instance

### insert

插入元素

#### Parameters

- `e` **Anyone** 要插入的数据元素

Returns **[BinNode][219]**

### remove

删除元素, 注意是删除节点,非节点为根的子树

#### Parameters

- `e` **Anyone** 要插入的数据元素

Returns **[Boolean][220]** 是否成功删除

### balanced

判断某个节点是否理想平衡即:左右高度相等

#### Parameters

- `x`
- `要判断的节点` **[BinNode][219]**

Returns **[Boolean][220]**

### AVLBalanced

判断某个节点是否AVL平衡即:-2<左高度-右高度<2

#### Parameters

- `x`
- `要判断的节点` **[BinNode][219]**

Returns **[Boolean][220]**

### balFac

获取节点的平衡因子 x.lc.height - x.rc.height;

#### Parameters

- `x`
- `要判断的节点` **[BinNode][219]**

Returns **[number][221]** 左子树高度和右子树高度的差值

### height

获取节点的高度

#### Parameters

- `x`
- `要判断的节点` **[BinNode][219]**

Returns **[number][221]** 节点高度,空树高 -1, 叶子高 0

## BST

**Extends BinTree**

BST 类(二叉搜索树类, 继承自 BinTree)

Returns **[BST][222]** Instance

### search

查找元素 e 所在的节点

#### Parameters

- `e` **Anyone** 要搜索的元素

Returns **\[[BinNode][219]]** 返回两项,第一项是搜索命中的节点,第二项是命中节点的父节点

### insert

插入元素

#### Parameters

- `e` **Anyone** 要插入的数据元素

Returns **[BinNode][219]**

### remove

删除元素, 注意是删除节点,非节点为根的子树

#### Parameters

- `e` **Anyone** 要插入的数据元素

Returns **[Boolean][220]** 是否成功删除

### removeAt

删除某个节点

#### Parameters

- `x` **[BinNode][219]** 要删除的节点

Returns **[BinNode][219]** 返回接替者

### searchIn

以 v 为根节点查找元素 e 所在的节点

#### Parameters

- `v` **[BinNode][219]** 要搜索的树的根节点
- `e` **Anyone** 要搜索的元素
- `parent`
- `p` **[BinNode][219]** 当前搜索节点的父节点

Returns **\[[BinNode][219]]** 返回两项,第一项是搜索命中的节点,第二项是命中节点的父节点

## BinNode

BinNode 类(二叉树节点类)

### Parameters

- `e` **Anyone** (optional, default `null`)
- `parent` **[BinNode][219]** 父节点 (optional, default `null`)
- `lc` **[BinNode][219]** 左子节点 (optional, default `null`)
- `rc` **[BinNode][219]** 右子节点 (optional, default `null`)

Returns **[BinNode][219]** Instance

### data

节点存储数据

### parent

父节点

### lc

左子节点

### rc

右子节点

### height

以该节点为根的树高度

### size

节点为根的子树规模

Returns **[Boolean][220]**

### isRoot

判断是否是根节点

Returns **[Boolean][220]**

### isLChild

判断是否是左子节点

Returns **[Boolean][220]**

### isRChild

判断是否是右子节点

Returns **[Boolean][220]**

### hasParent

判断是否有父节点

Returns **[Boolean][220]**

### hasLChild

判断是有左子节点

Returns **[Boolean][220]**

### hasRChild

判断是有左子节点

Returns **[Boolean][220]**

### hasChild

判断是有子节点

Returns **[Boolean][220]**

### hasBothChild

判断是有完整子节点 (即左右子节点都有)

Returns **[Boolean][220]**

### isLeaf

判断是否是叶子节点(没有子节点)

Returns **[Boolean][220]**

### sibling

兄弟节点

Returns **[BinNode][219]**

### uncle

叔叔节点(即父节点的兄弟节点)

Returns **[BinNode][219]**

### fromParentTo

获取来自父节点的引用

Returns **[Array][223]** [object, key]

### pred

获取中序遍历下的直接前驱

Returns **[BinNode][219]** 返回前驱节点,不存在则返回 null

### succ

获取中序遍历下的直接后继

Returns **[BinNode][219]** 返回后继节点,不存在则返回 null

### insertAsLC

将元素作为左子节点插入

#### Parameters

- `e` **Anyone**

Returns **[BinNode][219]** 返回插入额节点

### insertAsRC

将元素作为右子节点插入

#### Parameters

- `e` **Anyone**

Returns **[BinNode][219]** 返回插入额节点

### travLevel

当前节点作为根节点的子树层次遍历 BFS

#### Parameters

- `p`
- `visit`
- `访问函数` **[function][224]**

Returns **void**

### travPre

当前节点作为根节点的子树前序遍历 DFS

#### Parameters

- `p` **[BinNode][219]** 遍历的节点
- `visit`
- `访问函数` **[function][224]**

Returns **void**

### travIn

当前节点作为根节点的子树中序遍历 DFS

#### Parameters

- `p` **[BinNode][219]** 遍历的节点
- `visit`
- `访问函数` **[function][224]**

Returns **void**

### travPost

当前节点作为根节点的子树后序遍历 DFS

#### Parameters

- `p` **[BinNode][219]** 遍历的节点
- `visit`
- `访问函数` **[function][224]**

Returns **void**

### swap

交换量几个节点的数据

#### Parameters

- `node1` **[BinNode][219]** 要交换的节点1
- `node2` **[BinNode][219]** 要交换的节点2

Returns **void**

## BinTree

BinTree 类(二叉树类)

Returns **[BinTree][225]** Instance

### size

树的规模

Returns **[number][221]**

### size

更新树的规模

#### Parameters

- `num`

Returns **[number][221]**

### empty

树是否为空

Returns **[Boolean][220]**

### root

树根节点

Returns **[BinNode][219]**

### root

重置根节点

#### Parameters

- `_root`

Returns **[BinNode][219]**

### updateHeightAbove

更新节点以及祖先节点的高度

#### Parameters

- `p` **[BinNode][219]** 要更新的节点

Returns **[number][221]** 返回更新后的高度

### insertAsRoot

作为树根节点插入

#### Parameters

- `e` **Anyone** 要插入的数据元素

Returns **[BinNode][219]**

### insertAsLC

作为节点的左孩子插入

#### Parameters

- `p` **[BinNode][219]** 要插入的位置
- `e` **Anyone** 要插入的数据元素

Returns **[BinNode][219]**

### insertAsRC

作为节点的右孩子插入

#### Parameters

- `p` **[BinNode][219]** 要插入的位置
- `e` **Anyone** 要插入的数据元素

Returns **[BinNode][219]**

### attachAsLC

作为节点的左孩子接入子树

#### Parameters

- `p` **[BinNode][219]** 要插入的位置
- `s` **[BinTree][225]** 要接入的数

Returns **[BinNode][219]**

### attachAsRC

作为节点的右孩子接入子树

#### Parameters

- `p` **[BinNode][219]** 要插入的位置
- `s` **[BinTree][225]** 要接入的数

Returns **[BinNode][219]**

### remove

删除某个节点作为根的子树

#### Parameters

- `p` **[BinNode][219]** 要删除的根节点

Returns **[number][221]** 返回删除节点的总个数

### secede

分离某个节点作为根的子树

#### Parameters

- `p` **[BinNode][219]** 要删除的根节点

Returns **[BinTree][225]** 返回分离出来的子树

### travLevel

树的层次遍历

#### Parameters

- `visit`
- `访问函数` **[function][224]**

Returns **void**

### travPre

树的前序遍历

#### Parameters

- `visit`
- `访问函数` **[function][224]**

Returns **void**

### travIn

树的中序遍历

#### Parameters

- `visit`
- `访问函数` **[function][224]**

Returns **void**

### travPost

树的后序遍历

#### Parameters

- `visit`
- `访问函数` **[function][224]**

Returns **void**

## Heap

Heap 堆

### Parameters

- `elems` (optional, default `[]`)
- `length` (optional, default `0`)

Returns **[Heap][226]** Instance

### size

获取堆的大小

Returns **[number][221]**

### percolateUp

元素上滤操作

#### Parameters

- `i` **[Number][221]** 上滤的元素索引

Returns **[Number][221]** 上滤的终止位置

### percolateDown

元素下滤操作

#### Parameters

- `i` **[Number][221]** 下滤的元素索引

Returns **[Number][221]** 下滤的终止位置

### insert

e 元素插入

#### Parameters

- `e` **Anyone**

Returns **void**

### getMax

返回堆的最大元素

Returns **Anyone**

### delMax

删除堆的最大元素

#### Parameters

- `e` **Anyone**

Returns **void**

## properParent

得到父子三者(最多三个) 中的最大值

### Parameters

- `n`
- `i`

## ListNode

ListNode 类

### Parameters

- `e` **Anyone?** 初始数组

Returns **[ListNode][227]** Instance

### insertAsSucc

将 元素 e 作为当前节点的直接后继插入

#### Parameters

- `e` **Anyone**

Returns **[ListNode][227]**

### insertAsPred

将 元素 e 作为当前节点的直接前驱插入

#### Parameters

- `e` **Anyone**

Returns **[ListNode][227]**

## List

Linked-list 类

### Parameters

- `_elem` **[Array][223]** 初始数组

Returns **[List][228]** Instance

### size

获取列表长度/大小

Returns **[number][221]**

### first

获取列表首节点

Returns **[ListNode][227]**

### last

获取列表末节点

Returns **[ListNode][227]**

### insertAsFirst

将 e 作为首节点插入列表

#### Parameters

- `e` **Anyone**

Returns **[ListNode][227]**

### insertAsLast

将 e 作为末节点插入列表

#### Parameters

- `e` **Anyone**

Returns **[ListNode][227]**

### insertA

e 作为节点 p 的直接后继插入

#### Parameters

- `p`
- `e` **Anyone**

Returns **[number][221]**

### insertB

e 作为节点 p 的直接前驱插入

#### Parameters

- `p`
- `e` **Anyone**

Returns **[number][221]**

### remove

删除指定节点 p

#### Parameters

- `p` **[number][221]** 要删除元素

Returns **Anyone** e 删除的元素

### disordered

返回列表中相邻元素逆序对总数, 当返回为0则代表列表有序

Returns **[Number][221]**

### findElem

从节点p往前查找目标元素 e 所在最后节点, 最多查询 n 个

#### Parameters

- `e` **Anyone** 要搜索的元素
- `n` **[number][221]** 最大搜索次数 (optional, default `this[size]`)
- `p` **[ListNode][227]** 从p节点往前查找, 默认为 tailer,查找全部 (optional, default `this[tailer]`)

Returns **[ListNode][227]** 等于 e 的元素最后的节点

### search

从节点p的n的真前驱中查找不大于 e 的最后者

#### Parameters

- `e` **Anyone** 要搜索的元素
- `n` **[number][221]** 最大搜索次数 (optional, default `this[size]`)
- `p` **[ListNode][227]** 从p节点往前查找, 默认为 tailer,查找全部 (optional, default `this[tailer]`)

Returns **[ListNode][227]** 等于 e 的元素最后的节点

### deduplicate

剔除重复元素,保证每个元素都是唯一的

Returns **[number][221]** 被删除的元素个数

### uniquify

有序列表剔除重复元素,保证每个元素都是唯一的

Returns **[number][221]** 被删除的元素个数

### traverse

向量的遍历

#### Parameters

- `visit` **[function][224]** 访问函数

Returns **any** void

### valid

判断节点是否合法,存在,且不是首尾哨兵

#### Parameters

- `p` **[ListNode][227]**

Returns **[boolean][220]**

### selectMax

从起始位置 p 的n个元素中找到最大者, 相同大小后者优先

#### Parameters

- `p` **[ListNode][227]** 排序起始节点 (optional, default `this[header].succ`)
- `n` **[number][221]** (optional, default `this[size]`)

Returns **[ListNode][227]**

### insertionSort

列表的插入排序, 对起始位置为 p 的 n 的元素进行排序

#### Parameters

- `p` **[ListNode][227]** 排序起始节点 (optional, default `this[header].succ`)
- `n` **[number][221]** (optional, default `this[size]`)

Returns **[ListNode][227]** 排序后的起始节点

### selectionSort

列表的选择排序, 对起始位置为 p 的 n 的元素进行排序

#### Parameters

- `p` **[ListNode][227]** 排序起始节点 (optional, default `this[header].succ`)
- `n` **[number][221]** (optional, default `this[size]`)

Returns **[ListNode][227]** 排序后的起始节点

### merge

列表的归并排序之归并, 对起始位置为 p 的 n 的元素进行排序

#### Parameters

- `p` **[ListNode][227]** 合并起始节点
- `n` **[number][221]**
- `he` **[List][228]** 要合并的另外一个列表
- `q` **[ListNode][227]** 合并的另外一个列表起始节点
- `m` **[number][221]** 要合并的另外一个列表的节点数

Returns **[ListNode][227]** 归并后的起始节点

### mergeSort

列表的归并排序, 对起始位置为 p 的 n 的元素进行排序

#### Parameters

- `p` **[ListNode][227]** 排序起始节点 (optional, default `this[header].succ`)
- `n` **[number][221]** (optional, default `this[size]`)

Returns **[ListNode][227]** 排序后的起始节点

## Queue

Queue 类

Returns **[Queue][229]** Instance

### enqueue

e 加入队列尾部(排队)

#### Parameters

- `e` **Anyone**

Returns **void**

### dequeue

将队首出队

Returns **Anyone** e 之前压入的元素

### front

指向队首元素

Returns **Anyone** e 之前压入的元素

### empty

判断队列是否为空

Returns **[Boolean][220]**

### size

当前队列列长度(规模)

Returns **[number][221]**

## SegmentTree

Segment-tree 线段树(区间树)类

### Parameters

- `data`
- `mergeFn`
- `_elem` **[Array][223]** 初始数组

Returns **[List][228]** Instance

### size

获取数据长度/大小

Returns **[number][221]**

### leftChild

左节点的索引

#### Parameters

- `index`

Returns **[number][221]**

### rightChild

右节点的索引

#### Parameters

- `index`

Returns **[number][221]**

### build

构建线段树

#### Parameters

- `index`
- `left`
- `right`

Returns **void**

### query

查询线段树的某一区间

#### Parameters

- `qL` **[Number][221]** 查询的区间开始值
- `qR` **[Number][221]** 查询的区间结束值

Returns **Anyone**

### update

更新某个值

#### Parameters

- `index` **[Number][221]** 原数组的索引
- `val` **Anyone** 修改后的值

Returns **void**

## Stack

Stack 类

Returns **[Stack][230]** Instance

### push

e 作为压入栈顶

#### Parameters

- `e` **Anyone**

Returns **void**

### pop

将栈顶出栈

Returns **Anyone** e 之前压入的元素

### top

指向栈顶元素,并不出栈

Returns **Anyone** e 之前压入的元素

### empty

判断栈是否为空

Returns **[Boolean][220]**

### size

当前栈高度(规模)

Returns **[Number][221]**

## Trie

Returns **[Trie][231]** Instance

### size

获取字典树的大小, 包含单词的数量

Returns **[number][221]**

### root

获取字典树的跟节点

Returns **[number][221]**

### insert

插入 word

#### Parameters

- `word` **[String][232]** 要插入的单词

Returns **void**

### find

查找 word

#### Parameters

- `word` **[String][232]** 要查找的单词

Returns **[Boolean][220]**

## UnionFind

UnionFind 并查集类

### Parameters

- `size` **[Number][221]** 集合规模

Returns **[UnionFind][233]** Instance

### find

查找p所属的集合编号

#### Parameters

- `p` **[Number][221]**

Returns **[Number][221]**

### union

链接两个元素

#### Parameters

- `p` **[Number][221]**
- `q` **[Number][221]**

Returns **void**

### isConnected

判断两个元素是否相连

#### Parameters

- `p` **[Number][221]**
- `q` **[Number][221]**

Returns **[Boolean][220]**

### toString

用来返回内部集合的情况

Returns **[String][232]**

## Vector

### Parameters

- `_elem` **[Array][223]** 初始数组 (optional, default `[]`)

Returns **[Vector][234]** Instance

### size

获取向量大小

Returns **[number][221]**

### insert

e 作为秩为 r 的元素插入,原后继元素依次后移

#### Parameters

- `r` **[number][221]** 插入新元素的秩 0 <= r <= size
- `e` **Anyone**

Returns **[number][221]**

### removeRange

删除指定区间的元素, 原后继元素依次前移\[lo, hi)

#### Parameters

- `lo` **[number][221]** 要删除元素起始的秩 0 <= r <= size
- `hi` **[number][221]** 要删除元素结束的秩 0 <= r <= size

Returns **[number][221]** 删除的元素数量

### remove

删除指定秩的元素, 原后继元素依次前移

#### Parameters

- `r` **[number][221]** 要删除元素的秩 0 <= r <= size

Returns **Anyone** e 删除的元素

### disordered

返回向量中相邻元素逆序对总数, 当返回为0则代表向量有序

Returns **[Number][221]**

### findElem

在向量的区间 \[lo, hi)查找元素等于 e 的最大秩

#### Parameters

- `e` **Anyone** 要搜索的元素
- `lo` **[number][221]** 要查找的起始秩 (optional, default `0`)
- `hi` **[number][221]** 要查找的结束秩 (optional, default `_elem.length`)

Returns **[number][221]** 等于 e 的元素最大的秩

### search

在有序向量的区间\[lo, hi)查找元素e 所在的秩, 0 <= lo <= hi <= size

#### Parameters

- `e` **Anyone** 要搜索的元素
- `lo` **[number][221]** 要查找的起始秩
- `hi` **[number][221]** 要查找的结束秩

Returns **[number][221]** 不大于 e 的元素最大的秩

### deduplicate

剔除重复元素,保证每个元素都是唯一的

Returns **[number][221]** 被删除的元素个数

### uniquify

有序向量剔除重复元素,保证每个元素都是唯一的

Returns **[number][221]** 被删除的元素个数

### traverse

向量的遍历

#### Parameters

- `visit` **[function][224]** 访问函数

Returns **any** void

### binSearch

在有序向量的区间\[lo, hi)查找元素不大于 e 的元素的最大秩, 0 <= lo <= hi <= size

#### Parameters

- `_elem` **[Vector][234]** 要搜索的有序向量或有序数组
- `e` **Anyone** 要搜索的元素
- `lo` **[number][221]** 要查找的起始秩 (optional, default `0`)
- `hi` **[number][221]** 要查找的结束秩 (optional, default `_elem.length`)

Returns **[number][221]** 不大于 e 的元素最大的秩

### bubbleSort

排序算法 起泡排序, 具有稳定性

#### Parameters

- `_elem` **[Vector][234]** 要排序的向量或数据
- `lo` **[number][221]** 要查找的起始秩 (optional, default `0`)
- `hi` **[number][221]** 要查找的结束秩 (optional, default `_elem.length`)

Returns **void**

### merge

排序算法 归并排序之合并

#### Parameters

- `_elem` **[Vector][234]** 要排序的向量或数据
- `lo` **[number][221]** 要查找的起始秩
- `mi`
- `hi` **[number][221]** 要查找的结束秩

Returns **void**

### mergeSort

排序算法 归并排序

#### Parameters

- `_elem` **[Vector][234]** 要排序的向量或数据
- `lo` **[number][221]** 要查找的起始秩 (optional, default `0`)
- `hi` **[number][221]** 要查找的结束秩 (optional, default `_elem.length`)

Returns **void**

[1]: #avl

[2]: #insert

[3]: #parameters

[4]: #remove

[5]: #parameters-1

[6]: #balanced

[7]: #parameters-2

[8]: #avlbalanced

[9]: #parameters-3

[10]: #balfac

[11]: #parameters-4

[12]: #height

[13]: #parameters-5

[14]: #bst

[15]: #search

[16]: #parameters-6

[17]: #insert-1

[18]: #parameters-7

[19]: #remove-1

[20]: #parameters-8

[21]: #removeat

[22]: #parameters-9

[23]: #searchin

[24]: #parameters-10

[25]: #binnode

[26]: #parameters-11

[27]: #data

[28]: #parent

[29]: #lc

[30]: #rc

[31]: #height-1

[32]: #size

[33]: #isroot

[34]: #islchild

[35]: #isrchild

[36]: #hasparent

[37]: #haslchild

[38]: #hasrchild

[39]: #haschild

[40]: #hasbothchild

[41]: #isleaf

[42]: #sibling

[43]: #uncle

[44]: #fromparentto

[45]: #pred

[46]: #succ

[47]: #insertaslc

[48]: #parameters-12

[49]: #insertasrc

[50]: #parameters-13

[51]: #travlevel

[52]: #parameters-14

[53]: #travpre

[54]: #parameters-15

[55]: #travin

[56]: #parameters-16

[57]: #travpost

[58]: #parameters-17

[59]: #swap

[60]: #parameters-18

[61]: #bintree

[62]: #size-1

[63]: #size-2

[64]: #parameters-19

[65]: #empty

[66]: #root

[67]: #root-1

[68]: #parameters-20

[69]: #updateheightabove

[70]: #parameters-21

[71]: #insertasroot

[72]: #parameters-22

[73]: #insertaslc-1

[74]: #parameters-23

[75]: #insertasrc-1

[76]: #parameters-24

[77]: #attachaslc

[78]: #parameters-25

[79]: #attachasrc

[80]: #parameters-26

[81]: #remove-2

[82]: #parameters-27

[83]: #secede

[84]: #parameters-28

[85]: #travlevel-1

[86]: #parameters-29

[87]: #travpre-1

[88]: #parameters-30

[89]: #travin-1

[90]: #parameters-31

[91]: #travpost-1

[92]: #parameters-32

[93]: #heap

[94]: #parameters-33

[95]: #size-3

[96]: #percolateup

[97]: #parameters-34

[98]: #percolatedown

[99]: #parameters-35

[100]: #insert-2

[101]: #parameters-36

[102]: #getmax

[103]: #delmax

[104]: #parameters-37

[105]: #properparent

[106]: #parameters-38

[107]: #listnode

[108]: #parameters-39

[109]: #insertassucc

[110]: #parameters-40

[111]: #insertaspred

[112]: #parameters-41

[113]: #list

[114]: #parameters-42

[115]: #size-4

[116]: #first

[117]: #last

[118]: #insertasfirst

[119]: #parameters-43

[120]: #insertaslast

[121]: #parameters-44

[122]: #inserta

[123]: #parameters-45

[124]: #insertb

[125]: #parameters-46

[126]: #remove-3

[127]: #parameters-47

[128]: #disordered

[129]: #findelem

[130]: #parameters-48

[131]: #search-1

[132]: #parameters-49

[133]: #deduplicate

[134]: #uniquify

[135]: #traverse

[136]: #parameters-50

[137]: #valid

[138]: #parameters-51

[139]: #selectmax

[140]: #parameters-52

[141]: #insertionsort

[142]: #parameters-53

[143]: #selectionsort

[144]: #parameters-54

[145]: #merge

[146]: #parameters-55

[147]: #mergesort

[148]: #parameters-56

[149]: #queue

[150]: #enqueue

[151]: #parameters-57

[152]: #dequeue

[153]: #front

[154]: #empty-1

[155]: #size-5

[156]: #segmenttree

[157]: #parameters-58

[158]: #size-6

[159]: #leftchild

[160]: #parameters-59

[161]: #rightchild

[162]: #parameters-60

[163]: #build

[164]: #parameters-61

[165]: #query

[166]: #parameters-62

[167]: #update

[168]: #parameters-63

[169]: #stack

[170]: #push

[171]: #parameters-64

[172]: #pop

[173]: #top

[174]: #empty-2

[175]: #size-7

[176]: #trie

[177]: #size-8

[178]: #root-2

[179]: #insert-3

[180]: #parameters-65

[181]: #find

[182]: #parameters-66

[183]: #unionfind

[184]: #parameters-67

[185]: #find-1

[186]: #parameters-68

[187]: #union

[188]: #parameters-69

[189]: #isconnected

[190]: #parameters-70

[191]: #tostring

[192]: #vector

[193]: #parameters-71

[194]: #size-9

[195]: #insert-4

[196]: #parameters-72

[197]: #removerange

[198]: #parameters-73

[199]: #remove-4

[200]: #parameters-74

[201]: #disordered-1

[202]: #findelem-1

[203]: #parameters-75

[204]: #search-2

[205]: #parameters-76

[206]: #deduplicate-1

[207]: #uniquify-1

[208]: #traverse-1

[209]: #parameters-77

[210]: #binsearch

[211]: #parameters-78

[212]: #bubblesort

[213]: #parameters-79

[214]: #merge-1

[215]: #parameters-80

[216]: #mergesort-1

[217]: #parameters-81

[218]: #avl

[219]: #binnode

[220]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean

[221]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number

[222]: #bst

[223]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array

[224]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function

[225]: #bintree

[226]: #heap

[227]: #listnode

[228]: #list

[229]: #queue

[230]: #stack

[231]: #trie

[232]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String

[233]: #unionfind

[234]: #vector