摘要:
原文: https://juejin.im/post/6844903848587296781 这篇文章主要讲 map 的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白 map 底层原理。 我要说明的是,这里对 map 的基本用法涉及比较少,我相信可以通 阅读全文
摘要:
树的基本概念 为了完整的建立有关树的基本概念,以下给出两种树的定义,即自由树和有根 术语 节点的度:一个节点含有的子树的个数称为该节点的度;树的度:一棵树中,最大的节点的度称为树的度;叶节点或终端节点:度为零的节点;非终端节点或分支节点:度不为零的节点;双亲节点或父节点:若一个结点含有子节点,则这个 阅读全文
摘要:
堆就是用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。 堆的常用方法: 构建优先队列 支持堆排序 快速找出一个集合中的最小值(或者最大值) 在朋友面前装逼 堆属性 堆分为两种:最大堆和最小堆,两者的差别在于节点的排序方式。 在最大堆中,父节 阅读全文
摘要:
知乎上有一个问题是这样的: 堆排序是渐进最优的比较排序算法,达到了O(nlgn)这一下界,而快排有一定的可能性会产生最坏划分,时间复杂度可能为O(n^2),那为什么快排在实际使用中通常优于堆排序? 昨天刚好写了一篇关于快排优化的文章,今天再多做一个比较吧。首先先看一个排序算法图: 排序方法平均情况最 阅读全文