数据结构
文章平均质量分 96
Forcible Bug Maker
大二在读,阿里云专家博主,乐于分享平时学习到的技术知识,希望和众大佬们交流学习。合作或交友,都欢迎来加我 qq:3964089684 vx:fbm3964089684
展开
-
【数据结构进阶】哈希的应用
哈希在数据存储和处理中的应用。位图,布隆过滤器,以及海量数据处理。话不多说,开始我们本次的内容。哈希的三个应用,分别是位图,布隆过滤器,以及海量数据处理。位图能以少量的空间快速存放数据的存在情况;布隆过滤器中需要注意k,m和n之间合适的比例关系;最后海量数据处理使用哈希切分的方式,将大文件分割成小文件,从而使计算机能够对其进行处理。C++数据结构。原创 2024-08-12 21:09:39 · 862 阅读 · 8 评论 -
【数据结构进阶】哈希
哈希的介绍,以及哈希表底层代码逻辑和实现。unordered系列的关联式容器之所以效率比较高,是因为底层使用了哈希结构。关于unordered容器的使用大家可以去参考文档,除了其容器内的元素无序之外,功能和接口与mapset及其相似(虽然底层大不相同)。应用链地址法处理溢出,需要增设链接指针,似乎增加了存储开销。事实上:由于开放定址法必须保持大量的空闲空间以确保搜索效率,如二次探查法要求装载因子a原创 2024-08-07 18:20:42 · 832 阅读 · 79 评论 -
【数据结构进阶】手撕红黑树
红黑树的介绍,以及底层代码逻辑和实现。刚刚接触编程的时候就听说有的大厂HR会让手撕红黑树。心中一直对这个数据结构保持着敬畏和向往,今天在将其撕出来后,用本篇博客加以记录,望周知。红黑树的结点包含四个成员变量,模板类型T:可以存储K或者pair类型,便于后期封装;三个指针:分别为指向左孩子结点的指针,指向右孩子结点的指针,指向父结点的指针;最后变量_col:枚举类型,可以存RED和BLACK。原创 2024-08-01 21:08:23 · 1230 阅读 · 131 评论 -
【数据结构进阶】AVL树
AVL树的介绍,以及其底层代码逻辑和实现。其底层都是按照二叉搜索树来实现的,但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成O(N),因此map、set等关联式容器的底层结构是对二叉树进行了平衡处理,即采用平衡树来实现。而我们今天所要说的AVL树就是平衡树的一种。AVL树是一棵绝对平衡的二叉搜索树,其要求每个节点的左右子树高度差的绝对值都不超过1,这样可以保证查询时高效的时间复杂度,即log_2 (N)。原创 2024-07-28 22:19:09 · 1217 阅读 · 38 评论 -
【数据结构进阶】二叉搜索树
二叉搜索树的介绍及自实现。基础的二叉树在前面的C数据结构阶段已经讲过(初阶数据结构之—二叉树链式结构之前因为用C语言的话,实现更高级数据结构比较困难,所以并没有往后展开。到了现在,已经有了一定的C++功底,就可以开启我们数据结构进阶部分的内容了。对于二叉搜索树的特性了解,有助于后续更好的理解map和set的特性。本节课作为学习更高阶数据结构的基础,对后续学习来说至关重要。本篇博客主要讲了二叉搜索树及其实现,K模型和KV模型,最后分析了二叉搜索树的性能,同时介绍了一些维持树平衡的解决方案。C++数据结构。原创 2024-07-21 16:35:00 · 2430 阅读 · 93 评论 -
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
本篇博客对归并排序,冒泡排序和直接插入排序做了深入分析和讲解,最后展示了七大经典排序的算法复杂度和稳定性。掌握排序是一个程序员的基本素养,对开拓思维也有很大的帮助。数据结构初阶相关的所有内容到这里就结束了,在进入进阶数据结构之前,我会写一些关于C++的基础语法的内容做一个过度,希望能帮助到大家。原创 2024-04-04 13:58:41 · 1699 阅读 · 78 评论 -
【数据结构与算法】快速排序(详解:快排的Hoare原版,挖坑法和双指针法|避免快排最坏时间复杂度的两种解决方案|小区间优化|非递归的快排)
本篇博客关于快排的内容,讲到了Hoare原版快速排序,挖坑法和双指针法,避免快排最坏时间复杂度的两种解决方案,小区间优化,非递归的快排等内容,希望能帮助大家快速理解和学会快速排序。原创 2024-03-28 21:31:05 · 1725 阅读 · 44 评论 -
【数据结构与算法】直接插入排序和希尔排序
插入排序的序列元素越接近有序,直接插入排序算法效率越高。希尔正是发现了其特点,引入“增量”的概念,允许排序中远距离的交换元素,快速达到预排序效果,大幅度提高了对大规模数据集的排序效率。直接插入排序和希尔排序在计算机科学的排序算法领域中占有重要地位。在掌握其中规律之后,相信你对排序一定有了更加深入的理解。原创 2024-03-26 13:31:28 · 1222 阅读 · 44 评论 -
初阶数据结构之---二叉树链式结构(二叉树的构建,二叉树的前序,中序,后序和层序遍历,计算二叉树结点个数,第k层结点个数,叶子结点个数,判断是否为完全二叉树)
本篇博客围绕二叉树的遍历,结点个数计算以及数值查找等内容展开。关于二叉树更多有趣的内容还远远不止这些,不过再次深入时就会以C++的方式来给大家呈现了。原创 2024-03-21 16:37:15 · 1411 阅读 · 47 评论 -
初阶数据结构之---堆的应用(堆排序和topk问题)
本篇博客带大家学习了解了堆排序,计算了向上调整建堆向下调整建堆的时间复杂度,最后还说到了topk算法。这些内容其实并不难,只要肯下功夫,肯动手,一定能学下来。原创 2024-03-12 21:08:54 · 1407 阅读 · 33 评论 -
初阶数据结构之---二叉树的顺序结构-堆
本篇博客带大家认识了一下树和堆,但这里只是带大家稍微看了看堆的实现。关于堆的内容其实还有很多,topk问题,堆排序,优先级队列中会更深入的带领大家去了解和使用堆,在下一篇数据结构中,会更深入的挖掘一些堆的应用,并计算一下其时间复杂度,让大家体会到堆的魅力。原创 2024-03-09 11:00:29 · 1422 阅读 · 37 评论 -
初阶数据结构之---栈和队列(C语言)
本篇文章讲解了栈和队列的概念和结构,并用C语言进行了模拟实现,最后拓展了循环队列的概念结构以及循环队列的实现。原创 2024-03-03 16:24:06 · 1428 阅读 · 28 评论 -
初阶数据结构之---顺序表和链表(C语言)
今天的内容到这里就结束了,本来想着把这篇博客分成三部分的,不知咋回事一口气给写完了,一万多字其实很多一部分是代码。后续博主还会继续产出数据结构系列的内容。原创 2024-02-21 22:26:40 · 1631 阅读 · 22 评论 -
初阶数据结构之---导论,算法时间复杂度和空间复杂度(C语言)
在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个分析方式。一个算法的用时随数据规模而增长的趋势,即时间复杂度//计算以下Fun1中++count执行了多少次?i < N;i++){j < N;t < 2 * N;++count;原创 2024-02-19 20:24:27 · 1369 阅读 · 18 评论