-
算法:数组中的第 K 个最大元素
题目 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 可以假设k总是有效的,且1
2021-02-23, Views: 2261 , Topics: 算法
-
数据结构:2-3树、B树、B+树、B*树
多路查找树 muitl-way search tree 在二叉树中,每个节点最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多路查找树,
-
算法:二叉树的层序遍历
要求 例如:以下二叉树按4 2 7 1 3 6 9顺序输出,一层一层输出。 4 / \ 2 7 / \ / \ 1 3
2021-02-21, Views: 2555 , Topics: 算法
-
数据结构:简化平衡二叉树旋转时节点交换的操作
说明 之前文章二叉树左旋、右旋、双旋时替换是new一个临时节点,使用根节点指向不变替换值的方式完成。可参见:https://www.zhangbj.com/p/
2021-02-20, Views: 2773 , Topics: 数据结构
-
数据结构:平衡二叉树的左旋、右旋和双旋
左旋 步骤 以当前节点的值,创建新的节点。 把新的节点的左子节点设置为当前节点的左子节点。 把新的节点的右子节点设置为当前节点的右子节点的左子节点。 把当前节
2021-02-19, Views: 3988 , Topics: 数据结构
-
算法:计算二叉树的高度
Java 实现 public class TreeHeight { public static void main(String[] args) {
2021-02-17, Views: 3176 , Topics: 算法
-
数据结构:平衡二叉树
别称 平衡二叉搜索树:Self-balancing binary search tree。 AVL树:得名于它的发明者G. M. Adelson-Velsky和
2021-02-16, Views: 2670 , Topics: 数据结构
-
算法:二叉排序树的添加、查找和删除
定义节点和二叉排序树 type BinarySortTree struct { root *Node } type Node struct {
2021-02-15, Views: 2507 , Topics: 算法
-
算法:使用深度优先搜索对二叉树遍历、查找和删除
说明 深度优先搜索使用递归实现二叉树的前序,中序和后序遍历、查找和删除。 前序遍历 先输出父节点,再遍历左子树和右子树。 中序遍历 先遍历左子树,再输出父节点,
2021-02-14, Views: 2839 , Topics: 算法
-
数据结构:满二叉树和完全二叉树
满二叉树 如图:所有叶子节点都在最后一层,并且节点总数为2^n-1。n为层数。 完全二叉树 如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一
2021-02-13, Views: 4354 , Topics: 数据结构
-
数据结构:树的常用术语
示意图 常用语 节点/节点对象(一个个小圆圈) 根节点/root节点 父节点 子节点 叶子节点 节点的权(节点的值) 路径:从ro
2021-02-11, Views: 3766 , Topics: 数据结构
-
数据结构:哈希表
定义 数组+链表:数组中的每个元素对应一个链表,加入元素时根据hash算法获得对应的数组索引,再插入到该索引对应的元素,即链表的末尾。 代码 func main
2021-02-11, Views: 2985 , Topics: 数据结构
-
算法:二分查找
循环法 func main() { arr := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9} fmt.
2021-02-10, Views: 2709 , Topics: 算法
-
算法:快速排序
算法演进 以数组中间索引的元素为中轴值,分组左右两边两个数组。 左边数组遍历找到一个大于中轴值的数,右边数组遍历找到一个小于中轴值的数,进行交换,遍历完成,左边
2021-02-09, Views: 2658 , Topics: 算法
-
算法:希尔排序
算法演进 首次按数组的长度除以2为分组步长,若步长大于1,则再次分组,以首次得到的步长再除以2为步长,以此类推分组,直至步长为1。 以[8, 9, 1, 7,
2021-02-08, Views: 2264 , Topics: 算法
-
算法:插入排序
算法:插入排序 算法演进 将数组看作两个数组,前一部分为有序数组(已排好序),后一部分为无序数组(待排序)。 以[10, 20, 5, 0]数组为例。 [10
2021-02-07, Views: 2123 , Topics: 算法
-
算法:选择排序
算法演进 假定第0位索引对应元素值最小。 第一次循环从第1位索引开始,与第0位索引对应的元素对比,如果第1位索引对应的元素比第0位索引对应的元素小,交换元素对
2021-02-05, Views: 2252 , Topics: 算法
-
算法:冒泡排序
算法演进 第一次从数组第0位索引开始遍历到数组最后一位将最大值置换至最后一位。 第二次从数组第0位索引开始遍历到数组最后第二位将最大值置换至最后第二位。 第三
2021-02-04, Views: 2004 , Topics: 算法
-
排序算法
内部排序 需要将所有数据都加入到内存中。 插入排序 直接插入排序 希尔排序 选择排序 简单选择排序 堆排序 交换排序 冒泡排序 快速排序 归并排序
2021-02-03, Views: 2241 , Topics: 算法
-
算法的时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度 算法的时间复杂度 计算程序执行时间 事后统计:打印程序的耗时时间,依赖于计算机硬件等因素,需在同一台计算机相同状态运行程序才准确。
2021-02-02, Views: 2134 , Topics: 算法