首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构与算法
三明志
创建于2024-09-01
订阅专栏
数据结构与算法笔记,学习分享
暂无订阅
共12篇文章
创建于2024-09-01
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
排序篇-内部排序-桶排序+线性排序
基本思想 桶排序将要排序的数据按照一定的范围分到几个有序的桶里,没个桶里的数据在单独进行桶内排序。桶内排序完后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。 基本思想 计数排序是桶排序的一种特殊情况。当要排序排序的n个数据,所处的范围不大时,我们可以把数据划分成…
外部排序
多路平衡归并的思想是将大文件化成小文件,小文件要小到能加载到内存中进行内部排序。对各个小文件内部排序写入外存后,再将小文件归并排序。假设初始归并段数为r,执行k路平衡归并,则归并趟数S = logk(r)。 k路平衡归并需k-1次关键字比较,S趟归并需要的比较次数c为:S(n-…
查找篇-二分查找
二分查找适用于有序的顺序表,就是说查找序列必须是连续存储的。考虑2^32数据规模的查找序列,如果使用二分查找,最多32次查找就能够知道查找对象在不在查找序列中了。 计算机实质上是一个状态机。编程针对的是各种状态。容易分析得到,这里有这么几个主要状态,分别是mid、low、hig…
查找篇-二叉查找树
二叉查找树的查找成功的平均时间复杂度为log(n),二叉查找树中序遍历输出有序序列,因此也叫二叉排序树。 最坏情况下,二叉查找树的查找成功的时间复杂度为O(n)。比如,序列是一个有序序列的情况。二叉查找树对缓存不友好。
查找篇-散列表
散列表是非比较查找表。散列表通过关键字直接查找数据结构,理论上的时间复杂度为O(1)。 散列函数是一个将关键字映射成对应地址的函数。 冲突 散列函数将不同的关键字映射到了相同的地址,这就是冲突。 直接定址法 H(key) = key或H(key) = a * key + b;适…
排序篇-内部排序-选择排序
基本思想 每趟循环从待排序元素中选出一个最小(最大)的元素排到i位置。直到n-1趟排序做完,数组有序。 基本思想:初始化含K的元素的小顶堆,遍历比较剩余数据,如果元素大于堆顶元素,则用该元素替换堆顶元素,并做一次堆化操作,否则继续比较下一个元素。
归并排序和基数排序
基本思想 归并排序采用分而治之的思想,将数组递归的划分成小的子表,再逐趟的将个子表排序后归并成一个新的有序表。
查找篇-平衡二叉树(AVL)
平衡查找二叉树适合静态查找多于动态操作的场景。由于平衡二叉树的维护成本较高,工程中一般不用平衡二叉树,而是用红黑树代替。 平衡二叉树的平衡因子为-1,0或1,相比二叉查找树,平衡二叉树的查找成功的平均时间复杂度更加稳定。 平衡查找二叉树在不理想情况下,经常需要维护平衡因子,维护…
查找篇-B树和B+树
B树又称多路平衡查找树,B树中所有结点的孩子个数的最大值称为B树的阶,通常用m表示。一棵m阶B树或为空树或满足如下性质: 树中每个结点至多有m棵子树,即至多有m-1个关键字。 若根结点不是终端结点,则至少有两棵子树。 除根结点外的所有非叶结点至少有ceil(m/2)棵子树,即至…
排序篇-内部排序-插入排序
插入排序的思想是将数组分为已排序序列和未排序序列两部分,通过比较每次将未排序序列中的元素插入到已排序序列中。插入排序是稳定的时间复杂度为log(n^2)的原地排序算法。 折半插入排序是对直接插入排序的优化。优化点在于查找未排序元素在已排序序列中的插入位置时用到了折半查找算法。 …
排序篇-内部排序-交换排序
冒泡排序是一种稳定的排序。 基本思想 分治思想:在待排序表中任选一个元素pivot作为枢轴,通过一趟排序将待排序表划分成独立的两部分,使其左半部分的元素都小于pivot,右半部分的元素都大于等于pivot,则pivot已就位,这个过程称为一趟快速排序。然后分别递归的对两个子表重…
图-存储结构 广度搜索优先和深度搜索优先算法
广度搜索优先算法类似于树的层次遍历算法。其基本思想为,首先访问顶点v,接着从v出发依次访问未被访问的于v领接的顶点w1,w2,...,wi,然后依次访问w1,w2,...,wi的所有未访问的领接顶点;再从这些访问过的顶点出发,依次访问所有未访问的领接结点,直到所有的结点都访问完…